Вход

Просмотр полной версии : Остановить функцию setInterval()


bulya123
30.09.2008, 12:31
Здрасте, вот делаю что-то типа галереи и возникла такая проблема, нужна кнопка для включения и отключения автоматической смены картинок, вот сама функция:

playGallery = function() {
if(k<number_items[current_num] - 1) k++
else k = 0
unload_pic(current_num, k)
}
IntervalGallery = setInterval(playGallery, 1000)

а вот кнопка:

play_gal_mc.onRelease = function() {

if(playflag == true) {
this.gotoAndStop(2);
delete IntervalGallery();//по идее удаляет функцию setInterval()
playflag = false
}
else {
this.gotoAndStop(1);
IntervalGallery();//возобновляет, тоже по идее
playflag = true;
}

}

но почему-то не работает:confused:
Скажите что не так:)

iNils
30.09.2008, 12:39
delete IntervalGallery();//по идее удаляет функцию setInterval()
Две ошибки.
1. setInterval и setTimeout возвращают id интервала - число. Вы же это число пытаетесь вызвать как функцию. :)
2. Пытаетесь удалить "результат" "вернутый" "числом-функцией".
Должно быть так
clearInterval (IntervalGallery);
В AS принято с большой буквы называть только классы и интерфейсы.

bulya123
30.09.2008, 12:57
delete IntervalGallery();//по идее удаляет функцию setInterval()
Две ошибки.
1. setInterval и setTimeout возвращают id интервала - число. Вы же это число пытаетесь вызвать как функцию. :)
2. Пытаетесь удалить "результат" "вернутый" "числом-функцией".
Должно быть так
clearInterval (IntervalGallery);
В AS принято с большой буквы называть только классы и интерфейсы.
Большое спасибо:)
Насчет классов и интерфейсов учту, я пока только учусь:)
Вот только еще вопрос, а как восстановить функцию, при повторном нажатии?
Если пишешь setInterval(playGallery, 1000), то потом не получается ее отчистить

iNils
30.09.2008, 14:43
Надо повторить
IntervalGallery = setInterval(playGallery, 1000)
Каждый вызов setInterval возвращает свой уникальный id

bulya123
30.09.2008, 14:48
Надо повторить
IntervalGallery = setInterval(playGallery, 1000)
Каждый вызов setInterval возвращает свой уникальный id
Спасибо, все получилось:)