/ / Znajdź indeks obiektu obiektu tablicy - actionscript-3, flash

Znajdź indeks obiektu obiektu tablicy - actionscript-3, flash

Oto uproszczona wersja sytuacji:

//"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?
}

Odpowiedzi:

1 dla odpowiedzi № 1

Znajdź zegar docelowy

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

Znajdź docelowy 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
}

1 dla odpowiedzi nr 2

Hmm, jestem pewien, że ktoś może wymyślić coś lepszego, ale z mojej głowy ...

Obiekt TimerEvent został przekazany do zdarzeniametoda obsługi zawiera odwołanie do obiektu Timer (spójrz na właściwość "target"). Stamtąd przypuszczam, że mógłbyś po prostu włączyć pętlę i sprawdzić ręcznie, do którego movieclip należy ... chociaż, jeśli jest ich dużo, może użyjesz Słownika, który odwzoruje twoje timery na movieclipy?

Po otrzymaniu odwołania do klipu filmowego można znaleźć jego rodzica i indeksować go itd.

(Zwykle nie wstawiłbym timera do wnętrza movieclip -didn "t nawet zauważyłem, że klasa movieclip była dynamiczna.)