PDA

Просмотр полной версии : clearInterval не вырубает.Ошибка или глюк?


Ная
05.07.2007, 16:28
версия флеши 8я.


function function1() {
sec = (new Date()).getTime();
var intrv:Number = setInterval(ch_timer, 10, sec);
}
function ch_timer(sec1) {
sec2 = (new Date()).getTime();
if (((sec2-sec1)>=300) && (ubrat == true)) {
clearInterval(intrv);
ubrat = false;
}
}

не очищает интервал. trace'ом проверяла. Почему, не понимаю. вроде все верно. думала что не видит название, пробовала передать его, результат тот же.
Подскажите ошибку, пожалуйста.

chingachgoog
05.07.2007, 16:38
А если вместо

var intrv:Number = setInterval(ch_timer, 10, sec);


написать


intrv = setInterval(ch_timer, 10, sec);

?

PS А не проще ли тут использовать setTimeout?

BigDan
05.07.2007, 16:45
переменная intrv должна быть глобальной для обеих функций

Ная
05.07.2007, 16:49
setTimeout'a у меня нет или он не в класс Data входит. убрала инициализацию переменной, не помогло(((


объявила intrv вне функций, но результат тот же

BigDan
05.07.2007, 16:52
var intrv:Number;
function function1() {
sec = (new Date()).getTime();
intrvr = setInterval(ch_timer, 10, sec);
}
function ch_timer(sec1) {
sec2 = (new Date()).getTime();
if (((sec2-sec1)>=300) && (ubrat == true)) {
clearInterval(intrv);
ubrat = false;
}
}

chingachgoog
05.07.2007, 17:01
Не знаю, у меня работает



function function1() {
ubrat=true
sec = (new Date()).getTime();
intrv = setInterval(ch_timer, 10, sec);
trace("use")
}
function ch_timer(sec1) {
trace("interval use")
sec2 = (new Date()).getTime();
if (((sec2-sec1)>=300) && ubrat) {
clearInterval(intrv);
ubrat = false;
trace("end")
}
}

function1()


PS setTimeout работает, хотя его нет в хелпе и он не выделяется синим

Ная
05.07.2007, 17:01
именно так и написала, но не вырубается.

Aisaid
05.07.2007, 19:31
если тебе нужна просто пауза (задержка) при проигрывании - проще писать так:


stop();
id = setInterval(function () {
clearInterval(id);
play();
}, 12000);

(12 секунд пауза)
id - переменная

CorC
06.07.2007, 10:29
Может вы интервал несколько раз объявляете не очистив? Потому как приведенные коды работают.

Kikasso
06.07.2007, 10:32
Хорошая практика чистить интервал каждый раз _перед_ тем как поставить. Если уже пуст, ничего страшного не случится.