Andengine на экране кнопку паузы
Вопрос
Я хочу создать кнопку паузы на экране
Что я делаю сейчас, так это добавлять спрайт, и когда я прикасаюсь к нему, я делаю двигатель. Stop (), проблема с этим, в том, что двигатель не обрабатывает больше прикосновений, пока я не возобновлю игру (теперь я использую кнопку меню для Это), так есть ли способ этого достичь?
Спасибо!
Решение 2
Я обнаружил, что лучший способ сделать это - создать сцену, и при приостановке, установите переопределение on manananagedupdate таким образом
@Override
onManagedUpdate(float pSecondsElapsed){
if(mPaused) super.onManagedUpdate(0);
else super.onManagedUpdate(pSecondsElapsed);
}
Таким образом, все работает отлично, и вы можете сделать это на игровом слое и обновлять слой меню как обычно,
Другие советы
Посмотрите на примеры Andengine, есть проект, который показывает использование меню в Andengine, вы найдете лучший способ реализации меню, кроме как остановить двигатель. Удачи!
Вы можете довольно легко сделать на экране кнопку паузы. Что вам нужно сделать, это создать кнопку паузы в любом месте на экране, нажав эту кнопку, покажите менуссен с кнопкой воспроизведения над исходной кнопкой паузы. Вы можете использовать .setPosition () для Menuitem, если вы прокомментируете код .buildAnimations () из примера PaUsemenu.
Чтобы продемонстрировать эту идею, я сделал простое действие, чтобы показать ее возможную. Посмотрите и попробуйте сами.
Ссылка на сайт: https://github.com/reittes/on-screen-pause-button
Удачи
Что я бы сделал, так это добавить в свой файл «приостановленную» логический if (!pause) {...}
Блок, чтобы он прекратил обновлять, когда он приостановился. Не самое элегантное решение, но работало в моей игре и не вызвало проблемы с производительностью.
Код псамью
@Override
public boolean onKeyDown(final int pKeyCode, final KeyEvent pEvent) {
if (pKeyCode == KeyEvent.KEYCODE_MENU && pEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (this.mEngine.isRunning()) {
gSceneGlobal.setChildScene(this.mGamePauseScene, false, true, true);
this.mEngine.stop();
} else {
gSceneGlobal.clearChildScene();
this.mEngine.start();
}
return true;
} else {
return super.onKeyDown(pKeyCode, pEvent);
}
}
Я создаю свой класс (MyEngine расширяет двигатель) и изменился
@Override
public boolean onTouch(final View pView, final MotionEvent pSurfaceMotionEvent) {
if(!isRunning()) {
// add your code for engine.stop();
}
}
и создать двигатель MyEngine в игровом классе;