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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.03.2009, 12:36
2K WebStudio вне форума Посмотреть профиль Отправить личное сообщение для 2K WebStudio Посетить домашнюю страницу 2K WebStudio Найти все сообщения от 2K WebStudio
  № 1  
Ответить с цитированием
2K WebStudio
 
Аватар для 2K WebStudio

Регистрация: Jul 2002
Адрес: Russia Federation Moscow
Сообщений: 779
Отправить сообщение для 2K WebStudio с помощью ICQ
По умолчанию Удаление объектов из иерархии отображения

Представим себе такую последовательность действий:

1. Создаем объект (сохранив на него ссылку)
2. Отслеживаем наступления некоторого события (не связанного с помещением или удалением объекта в/из иерархии отображения)
3. Добавляем объект в иерархию отображения
4. Удаляем объект из иерархии отображения
5. Удаляем ссылку на объект, созданную на первом шаге

По сути flash удалит объект, когда ему это понадобится, если ссылок на объект не осталось.
Вопрос такой: понятно, что события, обозначенные в шаге 2 не наступят. Но удалится ли объект? Т.е. будет ли считаться, что мы стерли ВСЕ ссылки на объект?

И еще момент: представим, что в наш объект были размещены другие объекты (ссылки на которые не сохранились), за которыми так же следили (addEventListener). После проделанных шагов 4 и 5, будут ли под-объекты считаться пригодными для выбрасывания?

Надеюсь, достаточно четко объяснил суть вопроса.

Заранее спасибо!

Старый 10.03.2009, 13:25
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Мне не совсем понятно, почему события в шаге 2 не наступят, но Вам виднее. Объект не удалится, потому что был шаг 1.

По моменту. addChild оставляет ссылку на ребенка у родителя в списке детей. Т. o. объекты не будут считаться пригодными для выбрасывания до тех пор, пока не произойдет removeChild.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 10.03.2009, 13:53
2K WebStudio вне форума Посмотреть профиль Отправить личное сообщение для 2K WebStudio Посетить домашнюю страницу 2K WebStudio Найти все сообщения от 2K WebStudio
  № 3  
Ответить с цитированием
2K WebStudio
 
Аватар для 2K WebStudio

Регистрация: Jul 2002
Адрес: Russia Federation Moscow
Сообщений: 779
Отправить сообщение для 2K WebStudio с помощью ICQ
Цитата:
Сообщение от dimarik Посмотреть сообщение
Мне не совсем понятно, почему события в шаге 2 не наступят, но Вам виднее. Объект не удалится, потому что был шаг 1.
Почему не удалится, если мы удаляем ссылку на нее и делаем reremoveChild()?

Цитата:
Сообщение от dimarik Посмотреть сообщение
По моменту. addChild оставляет ссылку на ребенка у родителя в списке детей. Т. o. объекты не будут считаться пригодными для выбрасывания до тех пор, пока не произойдет removeChild.
Но ссылки на родителя ведь уже нет. Почему не удаляются дети?

Старый 10.03.2009, 14:19
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 4  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
флеш не настолько умный. Все ссылки лучше занулять(включая удаляемых детей). И обязательно удалять всех слушателей.

Старый 10.03.2009, 14:35
2K WebStudio вне форума Посмотреть профиль Отправить личное сообщение для 2K WebStudio Посетить домашнюю страницу 2K WebStudio Найти все сообщения от 2K WebStudio
  № 5  
Ответить с цитированием
2K WebStudio
 
Аватар для 2K WebStudio

Регистрация: Jul 2002
Адрес: Russia Federation Moscow
Сообщений: 779
Отправить сообщение для 2K WebStudio с помощью ICQ
Цитата:
Сообщение от iflamberg Посмотреть сообщение
флеш не настолько умный. Все ссылки лучше занулять(включая удаляемых детей). И обязательно удалять всех слушателей.
мда.. неприятно..
как обойти всех детей - я знаю.
тогда вопрос: как зная объект, найти всех назначенных слушателей (т.е. пару тип и значение слушателя)?

Старый 10.03.2009, 15:04
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от 2K WebStudio Посмотреть сообщение
мда.. неприятно..
как обойти всех детей - я знаю.
тогда вопрос: как зная объект, найти всех назначенных слушателей (т.е. пару тип и значение слушателя)?
Ну вы же знаете, у кого и зачем подписались?

Старый 10.03.2009, 15:11
2K WebStudio вне форума Посмотреть профиль Отправить личное сообщение для 2K WebStudio Посетить домашнюю страницу 2K WebStudio Найти все сообщения от 2K WebStudio
  № 7  
Ответить с цитированием
2K WebStudio
 
Аватар для 2K WebStudio

Регистрация: Jul 2002
Адрес: Russia Federation Moscow
Сообщений: 779
Отправить сообщение для 2K WebStudio с помощью ICQ
Цитата:
Сообщение от __etc Посмотреть сообщение
Ну вы же знаете, у кого и зачем подписались?
в общем случае - нет.
т.е. необходимо следить за каждым подписанием и сохранять его - тоже выход, конечно. просто не универсальный.

спасибо.

и можно на "ты".

Старый 10.03.2009, 15:13
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от 2K WebStudio Посмотреть сообщение
в общем случае - нет.
Как это? Я вот знаю где и на что я подписываюсь у объекта и при его удалении всё отписываю.

Старый 10.03.2009, 15:18
2K WebStudio вне форума Посмотреть профиль Отправить личное сообщение для 2K WebStudio Посетить домашнюю страницу 2K WebStudio Найти все сообщения от 2K WebStudio
  № 9  
Ответить с цитированием
2K WebStudio
 
Аватар для 2K WebStudio

Регистрация: Jul 2002
Адрес: Russia Federation Moscow
Сообщений: 779
Отправить сообщение для 2K WebStudio с помощью ICQ
Цитата:
Сообщение от __etc Посмотреть сообщение
Как это? Я вот знаю где и на что я подписываюсь у объекта и при его удалении всё отписываю.
если рассматривать общий случай объекта, про который мы ничего не знаем.
ведь так можно рассматривать объект, чтобы удалить всех его детей, добавленных методом addChild() не отслеживая этого.

Старый 10.03.2009, 15:20
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
В правильно начатом проекте проблемы отписывания от событий в принципе не возникнет.

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

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

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


 


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


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