Форум 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=118760)

musat 05.12.2008 00:35

На примере for (с помощью setTimeout):
Код AS3:

var i:int;
for (i=0; i<5; i++) {
    setTimeout(func, 1000 * i, i);
}
 
function func(arg:int):void {
    trace(arg);
}

А вообще в AS3 рекомендуется заместо setInterval и setTimeout использовать класс Timer. Если надо по таймеру передать параметры, надо написать класс, расширяющий класс Timer, и добавить свойство, например, data, а потом в обработчике его забирать.

silin 05.12.2008 00:46

все верно
Если мы будем задерживать выполнение какой-то функции (используем setTimeout/setInterval) работа с интерфейсом и остальная деятельность плеера не нарушится, документация тебя не обманывает :)
но вернутся в точку вызова ты уже не сможешь - цикл отработал (запустил с задержкой твои функции) и все..

fisherman 05.12.2008 07:19

Ну вот и разобрались:) Есть только одна проблема.. получается, задержек в работе цикла не будет. Т.е. функции запустятся, и их выполнение никак не отменить. А как можно задержать цикл перед шагом(в конце предыдущего шага), чтобы функция успела выполниться, но так, чтобы не нагрузить систему(я подумывал о еще одном таймере в функции и while.. от таймера и таймаута, работающих одновременно, комп не будет в шоке, а вот while меня несколько настораживает) Если можно так сделать, то пользователь сможет отменить вычисления, что очень важно, потому как он будет иметь возможность задать скорость счета.
Какие мысли на этот счет?

silin 05.12.2008 09:37

по третьему кругу пошло, однако..
циклы for в такой задачке не при делах вовсе
см. пример из поста #2, в обработчике таймера(loopBody) меняй задержку следующей итерации, отменяй вовсе или что-там еще нужно в зависимости от действий пользователя или еще каких условий

iNils 05.12.2008 11:33

http://www.flasher.ru/forum/showpost...74&postcount=6
Тут пример, правда не на as3, разноса цикла по кадрам.


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

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