1

私はASを初めて使用し、最初のアプリケーションを作成しようとしています。キーボードのキーを押すなど、いくつかのイベントを管理するクラスがあります。

public class GameObjectController extends Sprite
{
    var textField:TextField;

    public function GameObjectController()
    {
        addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
    }

    private function onKeyDown(event: KeyboardEvent):void
    {
        trace("123");
    }
}

しかし、私がそれを実行していて、ボタンを押すと、何も起こりません。私は何が間違っているのですか?

4

2 に答える 2

3

s を試してstage.addEventListener()くださいKeyboardEvent

この理由は、イベントを追加するものは何でもフォーカスが必要であり、 にはstage常にフォーカスがあるためです。

GameObjectControllerがドキュメント クラスでない場合はstage、これを機能させるためにコンストラクタに解析するか、最初にステージに追加する必要があります。前者は実装が面倒ではありません。

public function GameObjectController(stage:Stage)
{
    stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
}
于 2012-12-17T06:46:13.207 に答える
0

ステージにキーボード イベントを追加し、KeyboardEvent クラスをインポートします。

package
{
    import flash.display.Sprite;
    import flash.events.KeyboardEvent;

    public class GameObjectController extends Sprite
    {
        public function GameObjectController()
        {
            stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownEventHandler);
        }

        private function keyDownEventHandler(event:KeyboardEvent):void
        {
            trace(event);
        }
    }
}
于 2012-12-17T06:49:54.713 に答える