Adobe Flash AIR覆盖Android后退按钮

时间:2013-03-27 15:10:15

标签: android actionscript-3 flash air adobe

在我的AIR AS3应用程序中,我试图像这样覆盖Back Button:

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 个答案:

答案 0 :(得分:3)

如果要停止关闭应用,则应截取EXITING事件:

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

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

我想我应该补充一点,您可以手动关闭应用程序:

NativeApplication.nativeApplication.exit();

答案 1 :(得分: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);
        }
    }
}

答案 2 :(得分:0)

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

答案 3 :(得分: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; 
        } 
        }