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

谢谢大家的帮助!问题是由于我的 FlashDevelop IDE 造成的。我使用了 PackageApp.bat 而不是 Run.bat,所以我的 .apk 的错误版本被部署到了设备上。希望这篇文章能帮助其他可能面临这个问题的人

于 2013-03-28T20:30:31.963 回答
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 回答