Форум 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 + random (http://www.flasher.ru/forum/showthread.php?t=96603)

Reon 03.06.2007 15:26

setInterval + random
 
Доброго времнеи суток.Суть проблеммы такова, есть функция, которая должна вызываться setInterval'ом, т.е. с задержкой.Все было бы отлично, только эту фуекцию нужно вызывать не через определенное количество врмени, а вызываться случайно, допустим в промежутке от 1 до 10 секунд. =) Хелп, плз.

BigDan 03.06.2007 15:31

Код:

var SI:Number;
SIF();
function SIF(){
 clearInterval(SI);
 .....
 .....
 .....
 SI = setInterval(SIF,10*Math.random());
}


Reon 03.06.2007 16:37

Цитата:

Сообщение от BigDan
Код:

var SI:Number;
SIF();
function SIF(){
 clearInterval(SI);
 .....
 .....
 .....
 SI = setInterval(SIF,10*Math.random());
}


Чет не очень получаеться. Допустим есть объект "lol"-включающий простую анимацию, в первом кадре он стопаеться и запускаеться только тогда, когда интервал отсчитает нужно количество времени вот чего получаеться...
Код:

var SI:Number;
SIF();
function SIF(){
 clearInterval(SI);
 lol.play();
 trace(getTimer()+" "+"inetrval"+" "+SI);
 SI = setInterval(SIF,Math.floor(Math.random((5)+3)*1000));
}

чет невоткну никак, нужно чтоб он работал только с секундами, поэтому домнажаю на 1000, ранддом должен выпадать в пределах от 0 до 4, минимальное число=3, максимальное=8. Вродь все логично, но работать верно нехочет... =( проанализируйте плз... ;)

Kikasso 03.06.2007 16:41

Код:

var SI:Number;
SIF();
function SIF(){
 clearInterval(SI);
 lol.play();
 trace(getTimer()+" "+"inetrval"+" "+SI);
 SI = setInterval(SIF, (Math.floor(Math.random()*5) +3 )*1000));
}

а чем вам setTimeout не нравится?

Reon 03.06.2007 16:57

Цитата:

Сообщение от Kikasso
а чем вам setTimeout не нравится?

Сорь, ничего по поводу setTimeout в хелпе немогу найти, можно поподробней?

DarkLight 03.06.2007 17:00

Как setInterval, но выполняется 1 раз. Недокументирован во Flash 8, но все использовали. В хелпе к CS3 уже заявлена официальная поддержка в Flash Player 8.

Reon 03.06.2007 17:10

Цитата:

Сообщение от DarkLight
Как setInterval, но выполняется 1 раз. Недокументирован во Flash 8, но все использовали. В хелпе к CS3 уже заявлена официальная поддержка в Flash Player 8.

Спасиб, разобрался, работает =) Теперь траблы только с рандомом...
Код:

setTimeout(SIF,(Math.floor(Math.random(10))+8)*1000);
немогу понять почему рандом выдает всегда значение приближеное к 8 секундам... оч непонятно...может кто поможт разобраться? :umnik2:

DarkLight 03.06.2007 17:15

Math.random() возвращает значения от 0 до 1
не надо путать с random(10), использовать которое уже не рекомендуется - устарело

Reon 03.06.2007 17:33

Ребят, всем огромное спасибо =) конечный код:
Код:

SIF();
function SIF(){
lol.play();
trace(getTimer());
setTimeout(SIF,(Math.random()+.3)*10000);
}

Выдает вполне приличный рандом ;)


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

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