Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Таймаут при выполнении цикла (http://www.flasher.ru/forum/showthread.php?t=124659)

BAtic 05.05.2009 19:33

Таймаут при выполнении цикла
 
Есть у меня массив с данными, который выводится в цикле. Я хочу чтобы при его переборке на каждой итерации возникала пауза в несколько секунд для показа текста.
Я пробовал setInterval, но получилось плохо, как лучше сделать? Спасибо!

iNils 05.05.2009 19:40

Код AS3:

var idInt:Number = setInterval (echo, 1000);
var limit:Number = 10;
var count:Number = 0;
function echo () {
        trace (count);
        if (++count == limit) {
                clearInterval (idInt);
        }
}


silin 05.05.2009 19:45

Код AS3:

var i:int = 0;
var arr:Array = ["a", "b", "c", "d"];
 
function iterate():void
{
        trace(i+":"+arr[i]);
        i++;
        if (i < arr.length)
        {
                setTimeout(iterate, 1000);
        }
}
iterate();


BAtic 05.05.2009 19:50

Спасибо всем большое, выбрал вариант с рекурсией)))

dimarik 05.05.2009 23:37

А где Вы тут рекурсию увидели?

GBee 06.05.2009 08:22

Вариант Silin'a сойдет за косвенную рекурсию :о) Хотя даже и за нормальную сойдет.

dimarik 06.05.2009 11:39

Цитата:

Сообщение от GBee (Сообщение 817914)
Вариант Silin'a сойдет за косвенную рекурсию :о) Хотя даже и за нормальную сойдет.

Эээм. Ну как бы раскомментируйте рекурсивный вызов, закомментировав setTimeout и Вы поймете в чем разница между рекурсией и нерекурсией.

Код AS3:

var i:uint = 0;
var arr:Array = ["a", "b", "c", "d"];
 
function iterate():void
{
        trace(i+":"+arr[i]);
        i++;
        if (i < arr.length)
        {
                setTimeout(iterate, 100);
                //iterate();
        } else {
                trace(new Error().getStackTrace() )
        }
 
}
iterate();

UPD. Начальник переубедил. Это рекурсия. Сложная. Но хорошая, потому что не переполняет стек.


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

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