/ /配列のプロパティのオブジェクトのインデックスを探す - actionscript-3、flash

プロパティのオブジェクトの配列のインデックスを見つける - actionscript-3、flash

これが、状況を単純化したものです。

//"mc" and "mc2" are Movie Clip instance names
var ary:Array=[mc, mc2];
mc.timer=new Timer(1000);
mc2.timer=new Timer(1000);
for(var i=0;i<ary.length;i++){
ary[i].timer.addEventListener(TimerEvent.TIMER,alarm);
}
function alarm(e:TimerEvent){
//how do I figure out which MovieClip"s timer went off, as well as that mc"s index?
}

回答:

回答№1は1

ターゲットタイマーを探す

function alarm(e:TimerEvent){
var timer:Timer = e.target as Timer;
}

ターゲットMCを探す

var ary:Array=[mc, mc2];
mc.timer=new Timer(1000);
mc2.timer=new Timer(1000);

//save the MovieClip
var dict:Dictionary = new Dictionary();
dict[mc.timer] = mc;
dict[mc2.timer] = mc2;

for(var i=0;i<ary.length;i++){
ary[i].timer.addEventListener(TimerEvent.TIMER,alarm);
}

function alarm(e:TimerEvent){
var timer:Timer = e.target as Timer;

var mc:MovieClip =  dict[timer] as MovieClip;//get the mc
}

回答№2の場合は1

ええと、私は誰かがより良い何かを思いつくことができると確信しています、しかし私の頭の上から...

イベントに渡されたTimerEventオブジェクトhandlerメソッドには、Timerオブジェクトへの参照が含まれています( "target"プロパティを参照してください)。そこから私はあなたがただループしてそれが属しているムービークリップを手動でチェックすることができると思います...しかし、それらがたくさんあるなら、おそらくあなたのタイマーをムービークリップにマッピングするDictionaryを使いますか?

ムービークリップの参照を取得したら、その親を見つけてインデックスを付けることができます。

(通常は、ムービークリップクラスが動的であることに気付いても、ムービークリップ内にタイマー参照を入れないでください。