Форум 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=203461)

grafillo! 25.09.2013 13:59

Как удалить объект созданный другой функцией?
 
Функция new загружает фото с урл и добавляет его в объект диалог виндоу, хотелось бы чтобы функция
closeMouse удаляла фото из dialog_window, но как получить доступ к этому объекту из другой функции?
обязательно ли нужно прописывать dialog_window.foto = null; - для корректного удаления?
Код AS3:

 function new(){
      var foto:Loader = new Loader;
        foto.load(new URLRequest(info.@foto));
 
        foto.contentLoaderInfo.addEventListener(Event.COMPLETE, loadfoto);
 
        function loadfoto(e:Event):void
{
          dialog_window.addChild(foto);
 
}
 
 
}
function closeMouse (event:MouseEvent):void {
 
        dialog_window.removeChild(foto);// нерабоатет габадж коллектор
        dialog_window.foto = null;
        }


gloomyBrain 25.09.2013 14:14

Я молчу про стиль/качество кода. Видимо, у Вас маловато пока опыта. Решение такое: Вам нужно сохранить ссылку на добавляемый элемент и потом воспользоваться ею же для удаления. Для этого нужно перед функцией new написать такой код:
Код AS3:

import flash.display.DisplayObject;
var _foto:DisplayObject = null;

И внутри функции loadfoto добавить такое:
Код AS3:

_foto = foto;

После чего внутри closeMouse написать так
Код AS3:

dialog_window.removeChild(_foto);
dialog_window.foto = null;

PS
GarbageCollector всегда работает правильно. Прошу Вас принять это на веру.
Так же стоит учесть что если Вы несколько раз будете добавлять Loader'ы на сцену, то для хранения ссылок Вам потребуется уже массив объектов DisplayObject.

grafillo! 25.09.2013 14:52

спасиба, норм вроде всё работает х)

Babylon 25.09.2013 16:47

не массив объектов, а массив ссылок

gloomyBrain 25.09.2013 17:39

Цитата:

не массив объектов, а массив ссылок
Спасибо, что бы я без Вас делал?.. А массив объектов делать научите?

MikroAcse 25.09.2013 18:22

Цитата:

не массив объектов, а массив ссылок
Не имеет смысла уточнять. За это тебе никто двойку не поставит и не отругает.
Если так, то все есть ссылки. Да, это верно, но (!) давайте будем говорить понятным для новичков языком.
Потом они сами достигнуть дзена.

dimarik 25.09.2013 23:55

Цитата:

Сообщение от Babylon (Сообщение 1146899)
не массив объектов, а массив ссылок

Браво, маэстро! Как вы его осадили!

Babylon 26.09.2013 02:44

Просто поправил. dimarik, кто Вас воспитывал в TZ? Извините, что с маленькой буквы.

caseyryan 26.09.2013 08:04

Цитата:

Если так, то все есть ссылки. Да, это верно
Не все. Примитивные типы передаются по значению :D (просто не мог пройти мимо))

п.с. сейчас наверняка еще кто-то скажет, что и примитивов в ас3 нет как таковых, что все они в любом случае наследники Object) и конец этой темы будет положен только кем-то из модераторов)

MikroAcse 26.09.2013 09:00

Э, не. Про простые типы я не говорил :)


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

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