Показать сообщение отдельно
Старый 19.06.2008, 10:58
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 111  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
У вас проблема в 40-ой строке:
Код:
	// добавим в эти сектора ссылку на объект
	for each (s in new_asteroid.sectors){
		if (!all_sectors[s]){ // такого сектора еще не было, создадим
			all_sectors[s] = new Object();
		}
		all_sectors[s][new_asteroid.name] = new_asteroid;
	}
asteroid.sectors - это Object вида:
[0_0] = true
[0_1] = true
...
Т.е. в качестве имени номер сектора, а в качестве значения всегда true.
Если перебирать циклом
Код:
for (s in new_asteroid.sectors) ...
то переменная "s" будет принимать значения: "0_0", "0_1" ...
Если же циклом for each, то вы пройдетесь по значениям, а не по именам:
Код:
for each (s in new_asteroid.sectors) ...
переменная "s" будет принимать значения: "true", "true" ...

В итоге, при создании все астероиды попали в сектор "true", и когда пытаетесь его корректно удалить (цикл for) из сектора "0_0", его нет, там null, о чем и сообщает Flash.
Ошибка довольно хитрая, понять в чем дело можно лишь, запустив в debug mode и внимательно посмотрев на значения переменных участвующих в строке с ошибкой: "s", "obj.sectors", "all_sectors", "all_sectors[s]"
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.