我是ActionScript新手,正在使用FlashDevelop IDE。我一直在玩一些非常簡單的事情,並遇到了一個我無法解決的問題。ActionScript 3 KeyboardEvent not firing
我的應用程序編譯並運行,並且一個監視點擊事件的函數完全觸發,當我將它傳遞給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跟蹤()觸發每預期時間,但從來沒有的KeyboardEvent火災,無論我按什麼鍵。有任何想法嗎?
我有原來,它沒有工作。由於我真的不知道舞臺對象是什麼,因此我將它取出來,並且由於CLICK事件繼續工作,我認爲它與瀏覽器中的頂層窗口對象相似。無論哪種方式,即使使用stage.addEventListener()它仍然無法正常工作,儘管奇怪的是CLICK事件繼續發揮作用。我很困惑。 :/ – 2010-11-05 09:38:59
嗯,我不知道發生了什麼,但是當我編譯我的代碼時,它工作。即使我向上帝發誓我沒有任何改變。也許FlashDevelop是一個有問題的IDE?誰知道。無論哪種方式,現在它可以工作了,我可以驗證在StageEvent上調用stage對象的addEventListener對於KeyboardEvents是必需的,但對於MouseEvents不是。不知道爲什麼,但無論如何都很高興。謝謝你的幫助。 – 2010-11-05 09:43:03