Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.06.2014, 22:26
Scritkey вне форума Посмотреть профиль Отправить личное сообщение для Scritkey Найти все сообщения от Scritkey
  № 1  
Ответить с цитированием
Scritkey

Регистрация: Jun 2014
Сообщений: 5
По умолчанию Удаление объектов

Здравствуйте, я вот только недавно начал изучать данный язык и сразу озадачился таким вопросом
Если удалить родительский объект все дочерьнии удалятся в месте с ним и освободят память?
у меня есть мувик в котором много разных объектов
Код AS3:
var mc:MovieClip = new MovieClip();
 
mc.addChild(new ImgClass());
mc.addChild(new ImgClass2());
...
 
stage.addChild(mc);
если удалить removeChild(mc) все что в нем тоже удалится?
И тут же если там внутри mc на каких то объектах весят слушатели событий что будет с ними?
----------
И еще например если я создал во Flash CS5 новый MovieClip в него натыкал картинок с библиотеки и других мувиков "не программно" задам ему класс "GameScreen" и программно добавил его на сцену после чего я его удалю со сцены removeChild или GameScreen = null все что было внутри тоже удалится из памяти?
Буду благодарен за любую подсказку

Старый 27.06.2014, 23:10
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 2  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
removeChild удаляет только из списка отображения.
К сожалению памятью управлять мы не можем, но мы можем удалить все ссылки на объект (GameScreen = null), удалить все слушатели. После этого GC сам удалит ненужный объект.

Старый 27.06.2014, 23:11
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Нет ничего никуда не удалится и будет висеть в памяти. Запустите метод removeChildren() , а так же снимите все прослушки с внутренних объектов
__________________
Марк Tween

Старый 27.06.2014, 23:42
Scritkey вне форума Посмотреть профиль Отправить личное сообщение для Scritkey Найти все сообщения от Scritkey
  № 4  
Ответить с цитированием
Scritkey

Регистрация: Jun 2014
Сообщений: 5
in4core, а что если в мувике очень много разных объектов и в утри объектов еще объекты целая иерархия
это выходит нужно вручную прописывать для всех удаление и убирать слушатели?
В выше сказаном посте
Цитата:
(GameScreen = null), удалить все слушатели. После этого GC сам удалит ненужный объект
И тут не по теме но возможно вы подскажете
Я долго мучался чтобы создать прелоадер вообщем в сети нашел такой метатег как
Код AS3:
[Frame(factoryClass = "Preloader")]
дальше сам прелоадер взял с FlashDevelop'a там такие строки есть
Код AS1/AS2:
var mainClass:Class = getDefinitionByName("Main") as Class;
if (parent == stage) stage.addChild(new mainClass() as DisplayObject);
else addChild(new mainClass() as DisplayObject);
Вопрос в том что если так и писать код то все нормально работает прелоадер срабатывает ждет пака все подгрузит и добавляет mainClass:Class на сцену (ждет - я имею виду выводи процент загрузки)
Но если написать так
Код AS1/AS2:
var mainClass:Class = new Main();
stage.addChild(mainClass as DisplayObject);
В этом случае просто белый экран пока не загрузи всю графику, из за чего оно так делает всем тут секрет поидеи в обоих случаях оно просто создает класс

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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