![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+4 20.08.08]
Регистрация: Jan 2004
Адрес: СПб
Сообщений: 22
|
Перевожу прогу AS2->AS3.
Проблема: Есть top:MovieClip - родительский. В нем создаю через new MovieClip и addChild еще мувики (программно создаю). Есть кнопка очистки родительского мувика. Алгоритм чистки следующий: function clearTop(){ for(var i:Number = 1; i<=top.numChildren; i++){ if(top.getChildAt(i)){ top.removeChildAt(i); } } } Алгоритм работает один раз - чистит содержимое top, а на второй раз - ругается что нет нифига - ругается 2006 ошибкой, типа нет мувика с таким индексом. Хотя проверку я поставил. Как сделать корректную проверку на существование Child? Замена top.getChildAt(i) на Boolean(top.getChildAt(i)) - ничего не дала |
|
|||||
|
стервочка (я мужик)
|
Ошибки:
1. индексы детей начинаются с 0. 2. код бесмысленен. в АС3 не бывает пустых пространств между детьми. удаляя одно дитя, все кто сидел выше смещаются вниз. 3. по причине описанный в п.2, у вас вообще получается обсурд. с каждым удалёнием numChildren уменьшается на 1. и при этом вы удаляете i-тый элемент. вот ваш алгаритм: |
|
|||||
|
[+4 20.08.08]
Регистрация: Jan 2004
Адрес: СПб
Сообщений: 22
|
Обалдеть! А как тогда правильно удалить всех детей родительского мува?
|
|
|||||
|
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
или так:
или так: или так: или еще как-то ![]() |
|
|||||
|
стервочка (я мужик)
|
|
|
|||||
|
[+4 20.08.08]
Регистрация: Jan 2004
Адрес: СПб
Сообщений: 22
|
Парни! Идеально! Спасибо!!
Недопетривал стековость контейнера. Теперь вообще многое прояснилось))) |
|
|||||
|
Маленькая лепта от меня:
Удалять элементы с нулевой глубины - труднозатратно, поскольку элементы следующие за удаленным будут сдвинуты на единицу вниз. Представьте, если в контейнере содержатся несколько тысяч чайлдов. Последний раз редактировалось Бармалей; 04.03.2008 в 16:49. |
|
|||||
|
стервочка (я мужик)
|
ну если на то пошло то numChildren тоже жрёт ресурсы.
|
|
|||||
|
Ну я не спорю, только почему-то мне кажется, что numChildren кэшируется при изменении количества детей и возвращается по требованию, а не пересчитывается каждый раз при обращении к нему. ;-)
|
|
|||||
|
Узнайте кол-во детей один раз...и удаляйте относительно него + лучше удалать, начиная с верхних, чтоб не менять индексы слоев при удалении.
__________________
Оптимизация производительности на уровне кода |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|