1

私は 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 は起動しません。何か案は?

4

3 に答える 3

6

リスナーをステージに追加する必要があります。

private function init(e:Event = null):void
{
    removeEventListener(Event.ADDED_TO_STAGE,init);

    stage.addEventListener(MouseEvent.CLICK, onClickEvent);
    stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent);
}
于 2010-11-04T20:33:09.890 に答える
3

イベントをリッスンしているムービークリップにフォーカスがあることを確認する必要がある場合があります。ボタンをクリックして開始するゲームのメニューまたは開始画面がある場合、そのムービークリップはステージから削除されてもフォーカスを保持できます。

これについて詳しく説明している良い記事があります: ステージ上のキーボード イベントが機能していません...?

于 2012-09-25T17:31:40.103 に答える
1

Flash IDE (少なくとも CS4 の場合) を使用している場合は、fla をデバッグ (Ctrl+Shift+Enter) またはテスト (Ctrl+Enter) するときに、キーボード ショートカットも無効にする必要があります。

ムービー ウィンドウで、[コントロール] -> [キーボード ショートカットを無効にする] を選択します。これにより、Flash IDE がキーボード入力を受信するのを停止し、代わりにデバッグ/テスト ウィンドウを許可します。

于 2010-11-05T01:03:06.060 に答える