3

非表示オブジェクトのステージ外でキーボード イベントにアクセスできないというのは本当ですか?

例:

package
{
//Imports
import flash.events.EventDispatcher;
import flash.events.KeyboardEvent;

//Class
public class TestClass extends EventDispatcher
    {
    //Constructor
    public function TestClass()
        {
        init();
        }

    //Initialization
    public function init():void
        {
        addEventListener(KeyboardEvent.KEY_UP, keyUpEventHandler);
        }

    //Key Up Event Handler
    private function keyUpEventHandler(evt:KeyboardEvent):void
        {
        trace("Test Class:  " + evt.keyCode);
        }
    }
}

ここで、 a を初期化し、キ​​ーボードの anew TestClass()押して、出力Test Class: aを受け取りたいと思います。

4

1 に答える 1

6

私の知る限り (およびlivedocsの例によると)、KeyboardEvent リスナーを displayObject に追加する必要があります。ステージ (または任意の displayObject) への参照をクラスの init メソッドまたはコンストラクターに渡すことで、抽象クラスと静的クラスでこれを行いました。

したがって、たとえば、ドキュメント クラスでは、次のようにすることができます。

var testClass:TestClass = new TestClass();
testClass.init(stage);

そして TestClass.as で:

public function init(stageReference:DisplayObject):void
{
   stageReference.addEventListener(KeyboardEvent.KEY_UP, keyUpEventHandler);
}

少し不安定であることには同意しますが、DisplayObject を使用せずにそれを行う方法はないと思います。

于 2011-06-23T19:14:28.270 に答える