![]() |
Остановить (найти) интервал в подгружаемом клипе?
Вот, такая ситуация:
Подгружается SWF (в один и тот же клип), в нем setIntervalom вызывается какая-то функция. Один раз - все хорошо, второй раз - интервалов становится 2, третий раз - 3, ну и так далее. Просто clearInterval() перед setInterval() не помогает... почему-то после того, как клип выгружается, интервал остается... и достать его уже не знаю как =/ |
Посмотреть бы на это.
|
Вот, упрощенный пример.
Код в loaded.swf Код:
var itr:Number;Код:
b_mc.onPress = function(){ |
Вам нужно перед загрузкой нового мувика удалять интервал внутри старого.
|
setTimeout.
или очищайте интервал ВНУТРИ самой функции. Передать можно параметром.. Код:
function f(intId){ |
Ну, это хорошо, если интервал можно найти. А если клип с сетИнтервалом не мой, и я вообще не знаю/не уверен есть ли он там. Как тогда?
|
|
2 Kikasso:
Не... меня вполне устраивает наличие интервала, пока флешка загружена. Хотелось бы какой-то способ поудалять _любые_ интервалы которые она понасоздавала после того, как она выгрузилась... Хотя... что-то в этом есть... можно попробовать изменить прототип так, чтобы он проверял наличие переменной, к которой был привязан. |
Юзай таймауты, и сажай их каждый раз заново, если надо.
|
Можно хранить номер интервала в _global (предварительно убедившись, что ролики одной версии).
|
__etc:
В том то вся и фишка, что номер интервала каждый раз меняется. Ну, вот чего наворотил. Страшно, конечно, но, вроде как работает... Код:
var intervalWatcher:Function = function (obj, itr2clear) { |
Что это? Зачем это? Зачем хаки? Чем не устроил _global? Зачем вообще интервал?
|
__etc:
а как узнать, что это тот же интервал? а не другой, но нужный, вызваный из того же места? и, в догонку, почему такая штука не работает? Код:
var __obj:Object = new Object(_root._mc); |
ну во-первых там 3 параметра должно быть, во-вторых, поменяйте местами объявление функции и watch или пишите
Код:
function widthWathcer(p, o, n){а в третьих, геттер/сеттер на watch не поймаешь, и наконец на обжекте это сработает, при учете пп 1, 2 и 3. Достаточно п. 3 Совет прежний - передавай id интервала параметром функции. |
третий параметр у watch не обязательный, а вот про геттер/сеттер не знал, спасибо.
Цитата:
Т.е. представим ситуацию: существует банерная програма, она загружает в себя SWF, и после того, как выгружает, должна удалить все, что может быть с ним связано. SWF может содержать какие угодно setInterval'ы вызванные где угодно. Как их все удалить, когда он выгрузится? |
Третий параметр надо вернуть, иначе свойство будет undefined. Так-то и первый необязательный, смысла только в этом мало.
Код:
prop = "test1";Ну или массив ссылок на таймауты в подгружаемом клипе, а убивая клип, вызываешь что-то вроде Код:
while ( intToKill = inrArr.pop() ) clearInterval ( intToKill ); |
эм... тут какое-то жестокое недопонимание =) Ну не могу я ничего сделать в подгружаемой флешке, я ее вообще не делал и не хочу. Мне готовую принесли =) А мне нужно после того, как она выгрузится из моей, поубивать все интервалы, которые она создала. Конечно. я могу попросить человека, который ее делал переписать что-то, чтобы мне было проще... но не хочется, чужая работа - все-тки деньги =)
|
Код:
_global.idsArray = [];PS> тоже хак, конечно, но поддерживает оба синтаксиса и переменное число аргументов userData. Enjoy, короче. |
Цитата:
|
Я не понимаю, чего машает:
Код:
clearInterval(_global.id) |
А если в подгружаемом swf есть такие строчки:
Код:
setInterval(Zer, 200);Как убрать (очстить) такой интервал в swf, в которую подгрузили? |
Код:
var int = setInterval(function() {},200); |
Да нет.
Цитата:
Как остановить, очистить Интервал Криворукого Дегроида, пример которого описан выше? Код:
clearInterval(_global.id) |
Если решение из 20-го поста, то нет. Если из 22-го, то скорее всего да.
|
Понял.
|
Цитата:
Вобщем, я больше склоняюсь к решению Kikasso, но еще надо будет немного поэксперементировать. |
Я предложил убивать вообще все интервалы. К тому же, твины без FPS не используют интервал.
|
Цитата:
Если твин с FPS, он работает на интервале. Если без, на ентерфрейме - и сам удалится. Я понял, wvxvw хочет подстраховаться от криворуких баннероделальщиков. __etc, ваш вариант убъет все интервалы, в том числе и ваши, посаженные до этого. |
| Часовой пояс GMT +4, время: 19:01. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.