1

私のAIR AS3アプリでは、次のように戻るボタンをオーバーライドしようとしています:

NativeApplication.nativeApplication.addEventListener( KeyboardEvent.KEY_DOWN, onKey );

private function onKey(e:KeyboardEvent):void 
{
    if (e.keyCode == Keyboard.BACK)
    {
        //stage.addChild(new MainMenuScreen());
        //stage.removeChild(this);
        //removeEventListener(KeyboardEvent.KEY_DOWN, onKey);
    }
}

私のコードは完成しているように見えますが、デフォルトの Android の動作(アプリが閉じられている)も実行されます。
誰かがこの問題に直面しましたか?

4

4 に答える 4

3

アプリの終了を停止するには、EXITING イベントをインターセプトする必要があります。

NativeApplication.nativeApplication.addEventListener(Event.EXITING, exitHandler);

function exitHandler(event:Event):void
{
    event.preventDefault();
}

次の方法でアプリを手動で閉じることができることを追加する必要があると思います。

NativeApplication.nativeApplication.exit();
于 2013-03-27T19:00:12.063 に答える
0

デフォルトのアクション(アプリケーションを閉じる)を防止するだけですが、他に何もすることがない場合は(readyToClose変数を使用するなどして)アプリケーションを閉じることができるようにしてください。

private function onKey(e:KeyboardEvent):void 
{
    if(e.keyCode == Keyboard.BACK)
    {
        if(!readyToClose)
        {
            e.preventDefault();

            //stage.addChild(new MainMenuScreen());
            //stage.removeChild(this);
            //removeEventListener(KeyboardEvent.KEY_DOWN, onKey);
        }
    }
}
于 2013-03-27T15:24:28.327 に答える
0

これを行う別の方法があります。複数のステージを使用する場合、これを最初のアクション パネルのフレーム 1 に配置できます。

NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN, CheckKeypress, false, 0, true)

function CheckKeypress(event:KeyboardEvent):void 
{ 
    switch (event.keyCode) 
    { 
        case Keyboard.BACK: 
        event.preventDefault();
        gotoAndPlay (1);
        break; 
        case Keyboard.MENU: 
        trace("Menu key is pressed.");
        break; 
        case Keyboard.SEARCH: 
        trace("Search key is pressed."); 
        break; 
        } 
        }
于 2013-05-31T22:47:11.893 に答える
0

皆さん、助けてくれてありがとう!この問題は、私の FlashDevelop IDE が原因でした。Run.bat の代わりに PackageApp.bat を使用したため、間違ったバージョンの .apk がデバイスに展開されました。この投稿が、この問題に直面している可能性のある他の人に役立つことを願っています

于 2013-03-28T20:30:31.963 に答える