PDA

Просмотр полной версии : setTimeout в цикле


Yukagir
24.03.2007, 18:28
Здравствуйте.
Помогите, пож., разобраться.
Есть функция на открытие четырех подменю
function current_sbm_open(){
for(var i:Number = 1; i<but_nums+1; i++){
var temp_sbm = this["sbm"+i];
setTimeout(function(){temp_sbm.play();}, 1000*(i-1));
trace(temp_sbm);
};
};
but_nums равен 4
открывается только четвертый клип. Причем сразу без задержки.
А в trace указывается все правильно - по порядку все четыре имени.
_level0.sbm4.sbm1
_level0.sbm4.sbm2
_level0.sbm4.sbm3
_level0.sbm4.sbm4

Спасибо.

iNils
24.03.2007, 18:44
function current_sbm_open () {
for (var i:Number = 1; i < but_nums + 1; i++) {
var temp_sbm = this["sbm" + i];
setTimeout (temp_sbm, "play", 1000 * (i - 1));
}
}

Yukagir
24.03.2007, 18:48
супер. спасибо большое. в который раз помогаете.

iNils
24.03.2007, 19:00
Кстати, trace у вас не там стоял. Надо было внутри функции, где был записан play, тогда бы увидели, что на самом деле на момент вызова, обращение идет к последнему мувиклип все 4 раза.

Yukagir
24.03.2007, 19:14
точно -)) ну, все с опытом приходит. впредь буду знать. спасибо большое еще раз.