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

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

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
По умолчанию Удаление child'ов у DisplayObjectContainer'а

Привет. Расскажите пожалуйста как следует действовать в данной ситуации:
Код:
var s:Sprite = new Sprite();
var b:Sprite = new Sprite();

s.addChild(b);

removeChild(s);

Debugger.trace(s.parent); //null
Debugger.trace(b.parent); //[object Sprite]

s = null;
Debugger.trace(s);//null
Debugger.trace(b.parent);//[object Sprite]
Т.е. при удалении спрайта-родителя (s), он все равно остается родителем чайлда (b). Т.е. на него сохраняется ссылка, равно как и на чайлда. Соостветственно GarbageCollector никогда не придет за ними. Получается, чтобы очистить память мне обязательно надо вручную присваивать null всем объектам?

Старый 31.10.2008, 16:15
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Это надо тестить... но, по-идее - нет, не обязательно, т.как GC должен искать привязку к какому-нибудь топ-левел объекту, но на сколько хорошо он это делает - я не знаю...
__________________
Hell is the possibility of sanity

Старый 31.10.2008, 16:18
smilenka вне форума Посмотреть профиль Отправить личное сообщение для smilenka Найти все сообщения от smilenka
  № 3  
Ответить с цитированием
smilenka
[+1.3 31.10.08]

Регистрация: Sep 2008
Сообщений: 8
Что вы намеревались сделать строчкой " removeChild(s); " ?
Код:
//Если вы добавили в контейнер s объект b
s.addChild( b ) ;
// то удалить b из s
s.removeChild( b ) ;
И если на них больше не было других ссылок, то со временем оба уйдут с миром.

Старый 31.10.2008, 17:07
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 4  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Этой строкой я намеревался удалить родителя, а заодно и его детей. Но дальнейшая судьба объектов неизвестна.
Надо тестить? А как? System.gc() ничего не дает. А про привязку к топ-левел объекту не слышал. Везде пишут, что garbage collector подсчитывает количество ссылок, ну и проверяет, не ссылаются ли объекты друг на друга.

Старый 31.10.2008, 17:07
divinus вне форума Посмотреть профиль Отправить личное сообщение для divinus Найти все сообщения от divinus
  № 5  
Ответить с цитированием
divinus
 
Аватар для divinus

Регистрация: Dec 2005
Адрес: мухосранск
Сообщений: 661
Отправить сообщение для divinus с помощью ICQ
а откуда вы собственно пытаетесь удалить s? если вы его еще никуда не добавили?
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет...

Старый 31.10.2008, 17:11
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 6  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
А еще я не написал package, class и т.д.

Старый 31.10.2008, 21:44
Felicast вне форума Посмотреть профиль Отправить личное сообщение для Felicast Найти все сообщения от Felicast
  № 7  
Ответить с цитированием
Felicast
 
Аватар для Felicast

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
если все спроектировано правильно - такие ситуации обычно не возникают.
а так, почитайте тут
__________________
я могу стать всем, если только захочу

Старый 09.02.2009, 13:52
Bayanio вне форума Посмотреть профиль Отправить личное сообщение для Bayanio Найти все сообщения от Bayanio
  № 8  
Ответить с цитированием
Bayanio

Регистрация: Aug 2005
Сообщений: 1
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Это надо тестить... но, по-идее - нет, не обязательно, т.как GC должен искать привязку к какому-нибудь топ-левел объекту, но на сколько хорошо он это делает - я не знаю...
Смотрите., собственно s удалился., а трейсите вы рут., т.е. вы я так понял создали спрайт в скрипте., поэтому он и не удаляется можете удалить - this.removeChild(b);

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

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

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


 


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


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