Andengine onScreen Пауза - PullRequest
3 голосов
/ 01 мая 2011

Я хочу создать экранную кнопку паузы в двигателе

Теперь я добавляю спрайт, и когда я его трогаю, я запускаю engine.stop (), проблема в том, что движок не обрабатывает больше заданий, пока я не возобновлю игру (теперь я использую кнопка меню для этого), так есть ли способ добиться этого?

Спасибо!

Ответы [ 6 ]

4 голосов
/ 12 июля 2012

Я нашел, что лучший способ сделать это - создать сцену, и когда он поставлен на паузу, установите переопределение onManagedUpdate таким образом

@Override
onManagedUpdate(float pSecondsElapsed){
 if(mPaused) super.onManagedUpdate(0);
 else        super.onManagedUpdate(pSecondsElapsed);
}

Таким образом, все работает отлично, и вы можете сделать это на игровом слое.и обновите слой меню как обычно,

4 голосов
/ 02 мая 2011

Посмотрите на примеры AndEngine, есть проект, который показывает использование меню в AndEngine, вы найдете лучший способ реализации меню, отличного от остановки двигателя.Удачи!

2 голосов
/ 21 февраля 2012

Вы можете сделать на экране кнопку паузы довольно легко. Что вам нужно сделать, это создать кнопку паузы в любом месте экрана, при касании этой кнопки, показать MenuScene с кнопкой воспроизведения поверх оригинальной кнопки паузы. Вы можете использовать .setPosition () для MenuItem, если закомментируете код .buildAnimations () из примера PauseMenu.

Чтобы продемонстрировать идею, я выполнил простое упражнение, чтобы показать, что это возможно. Посмотрите и попробуйте сами.

Ссылка: https://github.com/reittes/On-Screen-Pause-Button

GoodLuck

1 голос
/ 05 февраля 2012

Я создаю свой класс (MyEngine расширяет движок) и меняю

@Override
public boolean onTouch(final View pView, final MotionEvent pSurfaceMotionEvent) {                      
if(!isRunning()) {
  // add your code for engine.stop();
  }
}

и создаю движок MyEngine в игровом классе;

1 голос
/ 13 июля 2011

Psedu code

@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);
    }
}
1 голос
/ 12 июня 2011

Что я хотел бы сделать, это добавить «paused» логическое значение в ваш файл, а затем установить для кнопки значение true, а затем включить ваш модуль обновления двигателя блоком if (!pause) {...}, чтобы он прекратил обновление после паузы.Не самое элегантное решение, но оно сработало в моей игре и не вызывало проблем с производительностью при бездействии.

...