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

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

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

Регистрация: Feb 2009
Сообщений: 57
По умолчанию удаление потомков через цикл

Пытаюсь удалить объекты из контейнера через цикл, т. е. сделать очистку сцены, и не могу понять почему происходит ошибка на 53-й итерации

Код AS3:
        trace("zc "+zombieContainer.numChildren);
        containerObject = zombieContainer.numChildren;
	trace("co1 "+containerObject);
	for (i = 0; i <  containerObject; i++)
	{
		var zombieContainerZ:zombieMc = zombieContainer.getChildAt(i) as zombieMc;
 
		zombieContainer.removeChild(zombieContainerZ);//удалим его из контейнера
		trace("co for " + containerObject);
		trace("i " + i);
		trace("object "+zombieContainerZ);
	}
результаты трейса
Код:
zc 0
co1 0
zc 107
co1 107
co for 107
i 0
object [object zombieMc]
co for 107
i 1
object [object zombieMc]
co for 107
.....
i 52
object [object zombieMc]
co for 107
i 53
object [object zombieMc]
[Fault] exception, information=RangeError: Error #2006: Предоставленный индекс выходит за допустимые пределы.
ругается именно на
Код AS3:
var zombieContainerZ:zombieMc = zombieContainer.getChildAt(i) as zombieMc;
в чем причина? вроде в контейнере zombieContainer столько объектов, скалько указанно на момент входа в цикл.. и почему именно на 53? ктати, один момент, если объектов 107, то 53, если 106, то 52-я итерация с ошибкой. Что не так?

Старый 20.02.2011, 10:42
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 2  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
с конца нужно идти, с конца...

Старый 20.02.2011, 10:44
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 3  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
середина
по мере удаления объектов размер массива уменьшается

вот правильный код:

Код AS3:
while(zombieContainer.numChildren) zombieContainer.removeChildAt(0);

Старый 20.02.2011, 10:48
TexHuK вне форума Посмотреть профиль Отправить личное сообщение для TexHuK Найти все сообщения от TexHuK
  № 4  
Ответить с цитированием
TexHuK

Регистрация: Feb 2009
Сообщений: 57
Цитата:
Сообщение от mikhailk Посмотреть сообщение
середина
по мере удаления объектов размер массива уменьшается

вот правильный код:

Код AS3:
while(zombieContainer.numChildren) zombieContainer.removeChildAt(0);
гениально!!
благодарю
все работает как надо!


Последний раз редактировалось TexHuK; 20.02.2011 в 10:51.
Создать новую тему Ответ Часовой пояс GMT +4, время: 16:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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