Показать сообщение отдельно
Старый 28.08.2011, 14:02
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 8  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Цитата:
Сообщение от etc Посмотреть сообщение
Это называется плохо спроектированный код. В вашем случае конечно так нельзя. Но это только в вашем случае.
Я достаточно долго обдумывал как наиболее аккуратно сделать такие текстфилды. К моему сожалению текстфилд не является DisplayObjectContainer и на него ничего повесить нельзя. В данной задаче уже была тьма кода который работал с кучей текстфилдов, и надо было минимальной кровью дать им поддержку бекграундов. Я вижу тут только два варианта, либо делать наследника спрайта, и на него уже складывать текстфилд, либо делать так как я описал. Если делать спрайт, то он уже не будет являться текстфилдом, и все функции которые с ним работают придётся переделать.

В то-же время приведённый вами while (map_layer.numChildren) map_layer.removeChildAt(0); работает абсолютно корректно, и является более правильным способом удалить всех чайлдов. Т.к. событие removed может обрабатываться и каждый раз, когда вы пишете map_layer.removeChildAt(0) может выполняться сторонний код, который может изменять число чайлдов.

Между условиями "Удалим столько детей сколько их было в начале операции" и "Удаляем пока их совсем не останется" есть большая разница.
__________________
:)