Отключение кнопки возврата телефона (AIR для Android / ActionScript 3) - PullRequest
0 голосов
/ 26 июня 2011

Я делаю игру для Android с использованием AIR (то есть она запрограммирована в ActionScript 3, так же, как Flash).

Я хотел бы, чтобы физическая кнопка возврата на телефоне НЕ выходила из игры, вместо этого она должна приостановить игру. (Я сделаю так, чтобы он по-прежнему выходил из игры, если быстро нажать дважды.)

Однако мой код не работает:

public function Main() {
    if (Capabilities.cpuArchitecture=="ARM") {
        NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN, onMainKeyDown);
    }
}
private function onMainKeyDown(ke:KeyboardEvent) {
    if (ke.keyCode==Keyboard.BACK) {
        // Pause the game here.
        ke.preventDefault();
        ke.stopImmediatePropagation();
    }
}

Когда я публикую вещь на моем устройстве, она по-прежнему завершается, когда я нажимаю физическую кнопку возврата на телефоне.

Что я здесь не так делаю?

Редактировать: Возникла только исключительная ситуация с нулевым указателем, которую я еще не обнаружил. Как неловко!

Ответы [ 2 ]

0 голосов
/ 13 июля 2015
NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown, false, 0, true)

function onKeyDown(event:KeyboardEvent):void
{
    if( event.keyCode == Keyboard.BACK )
{
    event.preventDefault();
    event.stopImmediatePropagation();
    //handle the button press here. 
   }
}

Обратите внимание, что если вы установили stage.displayState = FULL_SCREEN, события клавиатуры не отправляются в ваше приложение!Вместо этого используйте stage.displayState = FULL_SCREEN_INTERACTIVE!

0 голосов
/ 14 февраля 2014
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
          //Here you can do what ever you want to do while pressing the back button
       }
       return true;

}
...