![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Modus ponens
|
__etc:
В том то вся и фишка, что номер интервала каждый раз меняется. Ну, вот чего наворотил. Страшно, конечно, но, вроде как работает... var intervalWatcher:Function = function (obj, itr2clear) {
trace("watcher called "+obj._width);
if (obj._width == 0) {
clearInterval(itr2clear);
clearInterval(++itr2clear);
trace("Interval "+itr2clear+" cleared");
}
return itr2clear;
};
Object.prototype.setInterval1 = function(o:Object, f:Function, t:Number) {
var i = ASnative(250, 0)(f, t);
ASnative(250, 0)(intervalWatcher, t, o, i);
return i;
};
Object.prototype.setInterval = function() {
if (typeof (arguments[0] == "function")) {
setInterval1(this, arguments[0], arguments[1]);
}
};
b_mc.onPress = function() {
_root._mc.loadMovie("loaded.swf");
};
c_mc.onPress = function() {
_root._mc.unloadMovie();
};
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 27.04.2007 в 01:40. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Что это? Зачем это? Зачем хаки? Чем не устроил _global? Зачем вообще интервал?
|
|
|||||
|
Modus ponens
|
__etc:
а как узнать, что это тот же интервал? а не другой, но нужный, вызваный из того же места? и, в догонку, почему такая штука не работает?
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
ну во-первых там 3 параметра должно быть, во-вторых, поменяйте местами объявление функции и watch или пишите
вместо var что-то = function(){} а в третьих, геттер/сеттер на watch не поймаешь, и наконец на обжекте это сработает, при учете пп 1, 2 и 3. Достаточно п. 3 Совет прежний - передавай id интервала параметром функции. |
|
|||||
|
Modus ponens
|
третий параметр у watch не обязательный, а вот про геттер/сеттер не знал, спасибо.
Цитата:
Т.е. представим ситуацию: существует банерная програма, она загружает в себя SWF, и после того, как выгружает, должна удалить все, что может быть с ним связано. SWF может содержать какие угодно setInterval'ы вызванные где угодно. Как их все удалить, когда он выгрузится?
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Третий параметр надо вернуть, иначе свойство будет undefined. Так-то и первый необязательный, смысла только в этом мало.
prop = "test1";
trace( prop );
this.watch("prop", trace );
prop = "test2";
trace( prop );
this.watch("prop", function(){ trace ("ep, I watch it"); } );
prop = "test3";
trace( prop );
this.watch("prop", function(p,o,n){return n;} );
prop = "test4";
trace( prop );
this.watch("prop", function(){return "it's me";} );
prop = "test5";
trace( prop );
Ну или массив ссылок на таймауты в подгружаемом клипе, а убивая клип, вызываешь что-то вроде Последний раз редактировалось Kikasso; 27.04.2007 в 05:50. |
|
|||||
|
Modus ponens
|
эм... тут какое-то жестокое недопонимание =) Ну не могу я ничего сделать в подгружаемой флешке, я ее вообще не делал и не хочу. Мне готовую принесли =) А мне нужно после того, как она выгрузится из моей, поубивать все интервалы, которые она создала. Конечно. я могу попросить человека, который ее делал переписать что-то, чтобы мне было проще... но не хочется, чужая работа - все-тки деньги =)
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
_global.idsArray = [];
ASSetPropFlags(_global, [setInterval], 0, 7); //оказалось - не нужно
_global.oldI = _global.setInterval;
_global.setInterval = function(){
trace(arguments);
var i = oldI.apply( null, arguments);
idsArray.push( i );
return(i);
}
ASSetPropFlags(_global, ["setInterval", "oldI"], 7, 7);//можно и не делать
setInterval ( trace, 1000, "interval");
setInterval ( trace, 1100, "interval2");
function f(){
trace ( arguments.join("") );
}
setInterval(this, "f", 5000, "син", "так", "сис", "2" );
function xMan(){
var i;
while( i = idsArray.pop() )clearInterval( i );
trace ("мусорщик пришел и все смел");
}
var i1 = oldI( trace, 2000, "а это наш интервал, его пока не убиваем" );
var i2;
var temp = function(){
clearInterval(i1);
clearInterval(i2);
trace ("ну и наших убъем");
}
var i2 = oldI( temp, 10000 );
setInterval ( xMan, 5500 );
trace( idsArray );
![]() PS> тоже хак, конечно, но поддерживает оба синтаксиса и переменное число аргументов userData. Enjoy, короче. Последний раз редактировалось Kikasso; 27.04.2007 в 09:57. |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 264
|
Цитата:
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Я не понимаю, чего машает:
Ролик хоть обзапускайся. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|