Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как полностью удалить экземпляр? (http://www.flasher.ru/forum/showthread.php?t=127055)

twix1124 03.07.2009 20:07

как полностью удалить экземпляр?
 
Т.е. что б после удаления кучи объектов флешка не лагала...
Достаточно ли удалить все его листенеры и сам экземпляр путём parent.removeChild?

Psycho Tiger 03.07.2009 21:05

Да. И все внешние ссылки на него.

iflamberg 03.07.2009 21:11

и еще занулить на него ссылки
upd:
упс. чета спатки мне пора =/

twix1124 03.07.2009 23:26

Цитата:

Сообщение от Psycho Tiger (Сообщение 833013)
Да. И все внешние ссылки на него.

Цитата:

Сообщение от iflamberg (Сообщение 833015)
и еще занулить на него ссылки
upd:
упс. чета спатки мне пора =/

Это одно и то же? Т.е. null присвоить?

Psycho Tiger 03.07.2009 23:36

Угадал.

incvizitor 06.07.2009 03:06

У меня схожая проблема Объекты отлично удалялись но вот написал

Код AS3:

setTimeout(hideField,1000,field);

и ничего не удаляется. Думале таймаут как и листенер надо удалить. Сделал так.

Код AS3:

var t=setTimeout(hideField,1000,field,t);
 
private function hideField(f,t)
{
        clearTimeout(t);
        t=null;
 
        ....
 
}

Без результата :(

BlooDHounD 06.07.2009 10:25

Код:

var t=setTimeout(hideField,1000,field,t);
Вас не смущает,что Вы передаётся аргументом переменную, которая обретёт своё значение только после выполнения это функции, и поэтому она всегда равна undefined.

incvizitor 06.07.2009 21:15

Так как же "очистить" таймаут?

BlooDHounD 06.07.2009 23:56

например так:
Код AS3:

private var _t:uint;
 
...
 
this._t = setTimeout(hideField,1000,field);
 
...
 
private function hideField(f) {
        clearTimeout( this._t );
        this._t = 0;
 
        ....
 
}


incvizitor 07.07.2009 00:28

Ну там походу массив нужен в таком случае... Я потому и передавал параметром. В принципе можно и так:

Код AS3:

var timeout_arr:Array=[];
....
timeout_arr.push(setTimeout(hideField,1000,field,timeout_arr.length);
 
private function hideField(f,i) {
        clearTimeout(timeout_arr[i]);
        timeout_arr[i] = 0;
 
        ....
}

Без этого точно нельзя. Не то что бы лень, но если есть более быстрый метод, был бы рад узнать его. И почему вместо "null" вы присваеваите "_t" пераменной "0".


Часовой пояс GMT +4, время: 04:49.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.