我是ActionScript开发的新手,我正在使用FlashDevelop IDE.我一直在玩一些非常简单的东西,并遇到了一个我似乎无法解决的问题.
我的应用程序编译并运行,并且监视单击事件的函数完全触发,当我将它传递给trace()时,我可以在控制台中看到该事件,但是看着KeyboardEvent的相同代码根本无法触发.
这是我的代码:
package GameTesting { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.KeyboardEvent; [Frame(factoryClass="GameTesting.Preloader")] public class Main extends Sprite { public function Main():void { if (stage) { init(); } else { addEventListener(Event.ADDED_TO_STAGE, init); } } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE,init); addEventListener(MouseEvent.CLICK, onClickEvent); addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent); } private function onKeyDownEvent(e:KeyboardEvent):void { trace(e); } private function onClickEvent(e:MouseEvent):void { trace(e); } } }
每次按预期触发MouseEvent trace(),但无论我按什么键,KeyboardEvent都不会触发.有任何想法吗?
您需要将侦听器添加到舞台:
private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE,init); stage.addEventListener(MouseEvent.CLICK, onClickEvent); stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent); }