使用FlashDevelop,我有一些代码来检测键盘事件。问题是,如果我从主类(Main.as)运行此代码,它将触发事件,但如果我去另一个类则不会。
例如,我有主类,它有这个功能
addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown);
public function onKeyDown(e:KeyboardEvent):void
{
trace(e.keyCode);
if (gameState == 1){main.onKeyDown(e);}
}
现在,这在第一堂课中效果很好。但是当我把它发给我的第二堂课MainMenu.as时,没有任何反应。
main = new MainMenu();
addChild(main);
gameState = 1;
两个班级都没有留言。如果我把事件放在第二堂课,没有任何反应。除键盘事件之外的所有其他事件仍然有效。
答案 0 :(得分:2)
键盘事件仅转发给具有焦点(及其父母)的MovieClip。如果您想要捕获所有事件而没有任何异常,请将其添加到舞台(因为它是所有事件的父级,它将始终接收事件):stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown);
。记得在完成课程后删除事件(它不会自行删除)。
另一种可能性是强制舞台的焦点到你的特定班级:stage.focus = this;
,但如果可能的话我会避免这种情况。