![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2007
Сообщений: 3
|
Как я понял все задержки во флэше реализовываются через setInterval с вызовом функции.
У меня, наверное руки не оттуда растут, этот сетИнтервал так и не заработал... хоть примеров насмотрелся в инете и делал почти так же. В любом случае бывают ситуации (у меня сейчас такая) когда алгоритм будет намного лучше смотреться и удобнее писать, если задержки будут НЕ ИМИТИРОВАТЬСЯ вызовом функций и НЕ разбрасывать один единый кусок кода по десятку callback функций. то есть, например цикл: Попытался это реализовать: //////////////////////
// Это реализация sleep-a раз и на всегда
function sleep(time)
{
int_id = setInterval(sleep_empty_call, time);
}
function sleep_empty_call()
{
log_field.text += "sleep_empty_call()\r"; // для отладки присобачил
updateAfterEvent();
clearInterval(int_id);
}
//
//////////////////////
// это пример алгоритма
for(var i=0; i<5; i++)
{
log_field.text += i+"\r";
sleep(5);
}
потом спутся паузу все 5 циклов Что не так ? нужна помощь. То есть мне бы заставить не выполняться(приостановиться) алгоритм на X времени... а с setInterval алгоритм сразу продолжает выполняться и через указанное время абсолютно независимо стартует другая "инстанция", выполняющая callback функцию. если через getTimer() , отказавшись от setInterval, брать время и гнать цикл: то плеер начинает негодавать по поводу загрузки и кидается ноутисами с предложениями прекратить выполнение Последний раз редактировалось vg2k; 01.03.2007 в 18:23. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
vg2k, для оформления кода есть теги [code][/code]. Оформите свой пост, как полагается.
|
|
|||||
|
Регистрация: Feb 2007
Сообщений: 3
|
__etc, забыл.... поправился.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Остановить выполнение цикла таким образом невозможно. Т.е. sleep во флеше нет. И приведенная ф-я sleep не является реализацией правильного sleep, это всего-лишь отложенное выполнение чего-либо.
|
|
|||||
|
Регистрация: Feb 2007
Сообщений: 3
|
Цитата:
Если не сложно, то попрошу продемонстрировать как в actionscript-ах будет выглядеть нижеприведенный алгоритм (написан "от болды"). Тут я при написании использовал свое понятие sleep ![]() Может есть какие удобные оболочки для setInterval-a через которые заботиться об очистке не прейдется да и удобнее работать ? // из хелпа генерация числа в диапазоне
function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
function some_func()
{
sleep(randRange(1,3));
// действия
somevar = randRange(1,2);
switch(somevar)
{
case 1:
// действия
break;
case 2:
// действия
sleep(randRange(2,4));
break;
}
}
for (i=0; i<100; i++)
{
// действия
sleep(randRange(3,6));
if (i==5 || i==20 || i==34)
some_func(i);
// действия
sleep(randRange(5,9));
}
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Можно вообще прервать выполнение цикла соответствующими операторами. Возобновить его уже не получится.
А что было продемонстрировано, я не понял. Под sleep я понял аналог подобной функции, например, в паскале, php. Т.е. остановка выполнения программы на заданный интервал. |
|
|||||
|
выполнение кода нельзя прервать
а потом продолжить можно лишь вызвать функцию через определенное кол-во миллисекунд по этому поводу уже писалось многократно, и в поиске отражено ![]()
__________________
"We Are The Champions My Friends!" Queen |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 7
|
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Угу, при этом всё подвиснет наглухо, а по истечении 15 сек будет вывалено сообщение о бесконечном цикле.
|
|
|||||
|
Регистрация: Feb 2007
Сообщений: 264
|
|
![]() |
![]() |
Часовой пояс GMT +4, время: 04:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|