在我的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行为(应用程序已关闭)也会执行。
有人遇到过这个问题吗?
答案 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;
}
}