0

オブジェクトがあるとします

var my_obj = new Object();
my_obj['key'] = value;

次のように、イベントリスナーを値に追加する方法はありますか

my_obj['key'].addEventListener(Blah Blah);

タイムライン上にボタンの長い(っぽい)リストがあります(レイアウトはセクションごとに非常に異なるため、アクションスクリプトを介してレイアウトを構築するよりも、タイムラインで行う方が理にかなっています)。

button1 = plays "frame label 1"
button2 = plays "frame label 2"

など....すべてを配列に格納することを考えていました

obj["button1"] = "framelabel1"
arr.push(obj);

次に、すべてのボタンに対して 1 つのイベント ハンドラーを用意し、target を使用してフレーム ラベルの値を取得することができます...

4

3 に答える 3

1

はい、あなたが言及したのとまったく同じ方法で、あなたが求めていることを正確に行うことができます。ここに例があります:

var value:Sprite = new Sprite();

var my_obj = new Object();
my_obj['key'] = value;

だから呼び出す:

my_obj['key'].addEventListener(Event.ENTER_FRAME, _onEnterFrameHandler);

次の呼び出しとまったく同じです。

value.addEventListener(Event.ENTER_FRAME, _onEnterFrameHandler);
于 2012-05-03T21:36:09.547 に答える
1

質問は私にはかなりあいまいです。私の推測では、値が設定されるたびに何かがトリガーされる必要があると思います。この場合、カスタム クラスを作成し、そこで getter-setter プロパティを宣言する必要があります。

例えば:

package
{
    import flash.display.Sprite;

    public class TestAccessor extends Sprite
    {
        private var someVarValue:uint = 0;

        public function TestAccessor()
        {
            super();
        }

        public function get someVar():uint
        {
            return someVarValue;
        }

        public function set someVar(value:uint):*
        {
            someVarValue = value;
            // this is the place where someVar is set.
            // do whatever else you like here,
            // you may choose to dispatch an event from here if you need.
        }

    }
}

AS1-AS2 の時代にはwatch()addProperty()その目的のために と がありましたが、これらの時代はとうの昔に過ぎ去っています。永久に。:)

于 2012-05-03T18:19:04.287 に答える
1

値がIEventDispatcherまたは拡張EventDispatcherである場合は、それにリスナーを追加できます。

于 2012-05-03T18:04:07.467 に答える