PDA

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


Yukagir
25.03.2007, 17:06
Добрый день

Сегодня - немного усложненный вариант вчерашнего топика -))
То, что посоветовал уважаемый iNils работает на ура,
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));
}
}но возникла необходимость усложнить воспроизводимую функцию. Это - функция начала проигрывания четырех клипов с задержкой
function current_sbm_open() {
for(var i:Number=1; i < but_nums+1; i++){
var temp_sbm = "sbm"+i;
setTimeout (for_timeout(temp_sbm), _parent.sbm_pause * (i - 1));
};
};
а это функция непосредственно того, что должны делать клипы
function for_timeout(n) {
trace(this[n]);
delete this[n].onEnterFrame;
this[n]._alpha = 100;
this[n].gotoAndPlay(1);
this[n].sbm_text.char_play();
}
к сожалению, у меня не хватило знаний, чтобы привести эту функцию к такому виду, чтобы она работала с тремя параметрами, как было с вариантом play(). В таком виде открыаются все четыре клипа, все работает правильно, но задержки нет, хотя в trace все отображается верно:
_level0.sbm4.sbm1
0
_level0.sbm4.sbm2
100
_level0.sbm4.sbm3
200
_level0.sbm4.sbm4
300

Если не трудно, подскажите, пожалуйста, нужное направление

Спасибо.

etc
25.03.2007, 17:09
Параметры в функцию передаются третим (и далее) аргументом в setTimeout. А вы сразу запускаете функцию for_timeout, а не передаете ссылку на неё.

iNils
25.03.2007, 17:10
setTimeout (for_timeout, _parent.sbm_pause * (i - 1), temp_sbm);

Yukagir
25.03.2007, 17:18
понял. спасибо большое.
а как же с вариантом

setTimeout (temp_sbm, "play", 1000 * (i - 1));

в ней аргумент стоит на первом месте, а функция на втором

iNils
25.03.2007, 17:21
Для setInterval и setTimeout есть два синтаксиса

setInterval(functionReference:Function, interval:Number, [param1:Object, param2, ..., paramN]) : Number

setInterval(objectReference:Object, methodName:String, interval:Number, [param1:Object, param2, ..., paramN]) : Number

Yukagir
25.03.2007, 17:23
понял. спасибо большое за помощь