|
|
|||||
setInterval
Столкнулся с такой траблой. Есть у меня свф-ка, я ее подгружаю в какой-нить контейнер, делаю на всяк. случай _lockroot=true (это я так, к слову), и спустя несколько секунд подгруженный мув удаляю. Да только проблема: та свф-ка практически беспорядочно (так задумано) создает интервалы через setInterval и после ее удаления интервалы остаются и продолжают выполняться Как бы логично ли это? Ведь после этого у меня мой мув в трейс начинает выводить гадость типа
"*** Security Sandbox Violation *** SecurityDomain [подгруженная свф-ка] tried to access incompatible context [мой мув]" И если это логично - как можно очистить интервалы, если их id я не знаю и узнать не могу? Первую тысЧу чистить, что ли???
__________________
...я люблю людей!.. |
|
|||||
Регистрация: Nov 2005
Сообщений: 221
|
Это логично.
Возможно не самый личший способ очистки всех интервалов: |
|
|||||
такой способ тут однажды обсуждался:в самом setInterval создаем массив, где и храним все запущенные интервалы,
добавляем метод очищающий все интрвалы из этого массива // Переписываем setInterval _global.setInterval = function () { if (!_global.setInterval.interval) { _global.setInterval.interval = []; _global.clearIntervalAll = function () { for (arg in _global.setInterval.interval) { clearInterval (_global.setInterval.interval[arg]); } }; } _global.setInterval.interval[_global.setInterval.interval.length] = ASnative (250, 0).apply (_global, arguments); }; //запускаем setInterval (function () {trace ("U " + getTimer ())}, 500); setInterval (function () {trace ("U2 " + getTimer ())}, 100); //по клику очищаем все onMouseUp=function(){ clearIntervalAll(); } |
|
|||||
Спасибо, но не в этом суть... Почему флеш ругается на попытки этого setInterval-а вызвать функцию после сноса загруженного мува? Как-то это странно. Мува уже давно нету, но в трейсе - предупреждения о попытке доступа именно из этого мува! С указанием его имени! Т.е. флеш запоминает что метод был вызван именно из подгруженного ролика, т.е. каким-то образом РАЗЛИЧАЕТ интервалы "свои" и интервалы "подгруженные", так почему же он не сносит их после удаления подгруженного ролика?
__________________
...я люблю людей!.. |
|
|||||
да вобщем setInterval глобальная функция, стало быть ей поровну откуда ее вызвали.., но вот что и где хранится о запущенных интервалах не ясно, зато ясно, что их надо очищать, потому как раз где-то остается ссылка на объект или функцию, то и объект не будет удален из памяти..
|
|
|||||
[+3 23.02.07]
Регистрация: Mar 2006
Сообщений: 104
|
Цитата:
|
Часовой пояс GMT +4, время: 14:44. |
|
« Предыдущая тема | Следующая тема » |
|
|