Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как правильно удалить MovieClip, чтобы он исчез из памяти? (http://www.flasher.ru/forum/showthread.php?t=176892)

Андрей911 20.03.2012 07:23

Как правильно удалить MovieClip, чтобы он исчез из памяти?
 
Как правильно удалить MovieClip, чтобы он исчез из памяти? Все-таки как это правильно делается? Я всегда в сомнениях по этому поводу. Вопрос к тем кто уже научился.

Есть звездочка, которая пролетает от одного угла экрана до другого. В ней есть слушатель события EnterFrame
Когда звездочка выходит из области видимости, слушатель снимается, а она сама удаляется со сцены.

1) Если звездочка созданная внутри функции и ссылки на нее не осталось она удалится из памяти?
Код AS3:

function addStar(){
var star:myStar=new myStar();
stage.addChild(star);
}

Если нет то как ее правильно удались?

2) Если на этой же звездочке кроме слушателя события EnterFrame был еще слушатель MouseEvent.CLICK, который остался после удаления ее со сцены, то звездочка удалится из памяти?

3) Как правильно удалить эту же звездочку если у нее есть дочерние мувики на которых висят слушатели на клик мышкой?

4) Как удалить звездочку ссылка на которую имеется в программе?
Код AS3:

var star:myStar;
 
function addStar(){
star=new myStar();
stage.addChild(star);
}

И еще есть ли какие-то средства отладки, которыми можно проверить что MovieClip полностью удален?

КорДум 20.03.2012 11:40

1) через какое-то время, когда GC решит, что превышена допустимая планка.
2) удалится, но слушатель будет висеть в памяти
3) желательно убивать и слушатели у внутренних тоже. Но насколько мне известно, если на слушатель нет ссылке из-вне, то GC вполне может успешно почистить кольцевые ссылки. Однако, я бы рекомендовал "деструкторы" вручную писать
4) удалить из списка отображения и заNULLить ссылку

Цитата:

И еще есть ли какие-то средства отладки, которыми можно проверить что MovieClip полностью удален?
Любой профайлер.

gloomyBrain 20.03.2012 12:39

1 - да
2 - да
3 - removeChild(звездочка), так же как 1 и 2 случаи
4 - removeChild + star = null


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

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