Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   почему не работает setInterval в цикле? (http://www.flasher.ru/forum/showthread.php?t=120854)

soldatoff 01.02.2009 23:41

почему не работает setInterval в цикле?
 
Помогите пожалуйста разобраться с задержкой показа.

Делаю текстовый баннер.

У меня есть файл vars.htm, его содержимое:
Цитата:

myVar01=первый текстRRвторой текст RRну и конечно третий&myVar02=RR&myVar03=3000
Из него забираются данные во флешку:
Код AS1/AS2:

var data_lv:LoadVars = new LoadVars ();
data_lv.onLoadfunction (success) {
        if(success) {
                var texts:Array = this.myVar01.split(this.myVar02);
                var len:Number = texts.length;
                        for (var i:Number = 0; i < len; i++)  {
                                setInterval((_root.klip.text = texts[i].toString()), this.myVar03);
                        }
        }
}
data_lv.load("vars.htm");

во самой флешке есть только одно текстовое поле с именем klip, по идее - при проходе по массиву texts, при каждой передаче в _root.klip.text, должна происходить задержка в 3 сек. Но в итоге флешка мне показывает только последнее значение из переменной myVar01 ("ну и конечно третий").

Пробовал делать еще так:
Код AS1/AS2:

var data_lv:LoadVars = new LoadVars ();
data_lv.onLoadfunction (success) {
        if(success) {
                var texts:Array = this.myVar01.split(this.myVar02);
                var len:Number = texts.length;
                        for (var i:Number = 0; i < len; i++)  {
 
                                setInterval(function(klip, texts, i){_root.klip.text = texts[i].toString()}, this.myVar03);
                        }
        }
}
data_lv.load("vars.htm");

тут вообще пишет undefined.

Я не бог весть какой спец в actionscript, но стараюсь хотябы научиться простым вещам.

Подскажите, плиз, что я делаю не так?

chingachgoog 01.02.2009 23:48

Посмотрите на синтаксис setInterval - он трех видов.
Особенности:
1) Не надо писать оператор вызова функции ()
2) Ссылка this правильно работать не будет - воспользуйтесь третим видом синтаксиса или другой ссылкой.

dimarik 02.02.2009 01:41

chingachgoog, подскажите, как выглядит третий вид setInterval

chingachgoog 02.02.2009 11:56

Цитата:

Сообщение от dimarik (Сообщение 794943)
chingachgoog, подскажите, как выглядит третий вид setInterval

Третий - когда вначале указывается путь objectReference.
Но я так понимаю вас смутило, то что их три, а не два?
Это потому, что по сути первый синтаксис представлен двумя видами:
ссылкой на функцию и возможностью задать литерал непосредственно.

iNils 02.02.2009 14:00

Цитата:

ссылкой на функцию и возможностью задать литерал непосредственно.
Не котируется. Синтаксиса два.

chingachgoog 02.02.2009 14:58

Цитата:

Сообщение от iNils (Сообщение 795006)
Не котируется. Синтаксиса два.

Хорошо. Если код
Код:

setInterval(моя_функция, 100)

function моя_функция(){
        trace("!")
}

и код
Код:

setInterval(function(){
                                          trace("!")
                                          }, 100)

"котируются" как один и тот же синтаксис - то я не спорю.
Но замечу, что разница между этими двумя записями есть.
А есть еще один вариант записи - т.н. "второй синтаксис".
Итого я вижу три различных варианта записи setInterval.

DarkLight 02.02.2009 15:22

chingachgoog, для Вас
Код AS1/AS2:

trace("aa");

и
Код AS1/AS2:

var s:String = "aa";
trace(s);

2 разных синтаксиса?

chingachgoog 02.02.2009 15:36

DarkLight, вы правы - я различаю эти два варианта записи.

iNils 02.02.2009 16:02

Для того, кого скоро забанят. Вот это синтаксис:
Код:

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

В приведенном выше примере, в обоих случаях для первого синтаксиса первым аргументом является Function, в не зависимости от того в каком виде оно туда попало.

ALiEN_ 02.02.2009 16:39

2 chingachgoog

Синтаксис и способы написания, это разные вещи. Можно придумать 100 способов передачи параметров в функцию например, но то что в нее нужно передать лишь определенное количество параметров определенного типа, это и есть синтаксис.

Код:

trace ( "aa" );
и
Код:

var s:String = "aa";
trace ( s );

В обоих случаях синтаксис записи "trace" верен, синтаксических ошибок нет. В обоих случаях отдается String, в качестве параметра, значит оба примера синтаксически одинаковы. Сама запись кода, конечно разная, но не путайте одно с другим.


Часовой пояс GMT +4, время: 23:06.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.