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

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

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

Регистрация: Oct 2013
Сообщений: 126
По умолчанию Система удаления ненужных объектов и слушателей

Прошу помочь советом.
Дело в том, что у меня, наверное, обоснованное, но всё же параноидальное стремление удалять объекты и слушатели, которые больше не нужны.

Архитекрута моего проекта такова:
Main хранит "уровни" и контролирует переход между ними.
Уровни - это объекты Sprite с соответствующими детьми (надписями, кнопками, объектами и т.д.).
Переход из уровня 1 в уровень 2 представляет собой удаление со сцены уровня 1 и помещение туда уровня 2.
При этом необходимо удалить не только сам уровень 1 со всеми его слушателями, но и всех его детей и внуков с их слушателями.
К сожалению, функции "удалить всю семью со слушателями на всех уровнях ниже вызываемого объекта", откликающуюся на removed_from_stage, я не нашёл (подозреваю, что такой и нет), поэтому делаю так:
При создании любого объекта, которому предстоит иметь детей, я ставлю проверку события removed_from_stage, и в cleanup() удаляю всех его слушателей при помощи removeEventListener, а также всех детей при помощи
Код AS3:
while (this.numChildren > 0) {this.removeChildAt(0) };
.
Соответственно, при удалении уровня 1 удаляются его дети, которые при своём удалении удаляют своих детей и т.д. И все удаляют своих слушателей.
Но при этом получается, что такую "чистилку" приходится приписывать каждому объекту, ведь даже при использовании
Код AS3:
while (this.numChildren > 0) {this.removeChildAt(0) };
удаляются только дети, а "внуки" либо остаются, либо от потери родителя начинают выдавать ошибки.

Прошу прощения за корявое объяснение, но по-другому не смог(
В книгах написано, что ненужные слушатели и объекты надо удалять.
Но неужели для этого надо каждому объекту добавлять слушателя removed_from_stage, чтобы он "почистился" сам и заставил "почиститься" своих детей?

По большому счёту вопрос заключается в том, как это делать правильно, т.е. "как лучше чистить детей и слушателей"?

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

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

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


 


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


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