Просмотр полной версии : убить setInterval(Timout)
Сабж. Как? Использование clearInterval проблему не решает:(
Каждый setInterval или setTimeout возращает уникальный идентификатор, который и надо передать clearInterval, иначе не понятно какой именно интервал надо убить.
id = setInterval (func, time);
clearInterval (id)
Не помогает. Ведет себя так как при не убитых onEnterFrame-ах, т.е. происходит наложения одного на другой и в результате требуемой задержки практически нет :(
DarkLight
20.04.2008, 12:47
Код приведен действующий. Скорее всего, вы обьявили идентификатор интервала как локальную переменную (через var) в одной функции, а пытаетесь очистить в другой, и, понятное дело, не получается. А эта переменнная должна находиться в области видимости, глобальной по отношению к обоим функциям.
DarkLight, а говорят, что телепатов нет!;) Спасибо, дело было именно в этом +1
И не забывайте, что запущенный второй (и последующий) интервалы без убийства предыдущего будут менять значение id и к старым уже обратиться будет "нельзя".
ashDesigner
22.04.2008, 21:18
И не забывайте, что запущенный второй (и последующий) интервалы без убийства предыдущего будут менять значение id и к старым уже обратиться будет "нельзя".
Это не так. Главное, чтобы переменная таймера была в пределах "видимости" для оператора clearInterval. Если у вас существует пять параллельных таймеров для, например, одной и той же функции и intervalID равно, соответственно, пяти, то вы можете убить каждый из пяти процессов по отдельности. Если не верите, попробуйте сами)) Как показывает практика, таймерные процессы находятся находятся в неком системном стеке, аналоге массива с ключом intervalID. Я могу привести пример такого работающего кода, если будет интересно.
Я могу убить все таймеры и без запоминания intervalID, достаточно циклом пройтись от 0 до очень много. Просто в таком случаи убьются все и нужные и не нужные, поэтому я и написал нельзя в кавычках.
ashDesigner
22.04.2008, 22:24
Ок, тогда все верно. Выходом из этой ситуации может быть создание собственного массива объектов с полями, например {processID:String, intervalID:Number}, чтобы точно знать, что чему соответствует. Обычно я так и делаю))
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.