Цитата:
Сообщение от etc
Это называется плохо спроектированный код. В вашем случае конечно так нельзя. Но это только в вашем случае.
|
Я достаточно долго обдумывал как наиболее аккуратно сделать такие текстфилды. К моему сожалению текстфилд не является DisplayObjectContainer и на него ничего повесить нельзя. В данной задаче уже была тьма кода который работал с кучей текстфилдов, и надо было минимальной кровью дать им поддержку бекграундов. Я вижу тут только два варианта, либо делать наследника спрайта, и на него уже складывать текстфилд, либо делать так как я описал. Если делать спрайт, то он уже не будет являться текстфилдом, и все функции которые с ним работают придётся переделать.
В то-же время приведённый вами while (map_layer.numChildren) map_layer.removeChildAt(0); работает абсолютно корректно, и является более правильным способом удалить всех чайлдов. Т.к. событие removed может обрабатываться и каждый раз, когда вы пишете map_layer.removeChildAt(0) может выполняться сторонний код, который может изменять число чайлдов.
Между условиями "Удалим столько детей сколько их было в начале операции" и "Удаляем пока их совсем не останется" есть большая разница.