Показать сообщение отдельно
Старый 27.11.2012, 03:00
TurboDizel вне форума Посмотреть профиль Отправить личное сообщение для TurboDizel Найти все сообщения от TurboDizel
  № 7  
Ответить с цитированием
TurboDizel
 
Аватар для TurboDizel

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от AlexLucas Посмотреть сообщение
Покажите что это за функция knowzombie() и кто такой Zombie у вас в if'e, вы всех зомби в одном мувике 'Zombie' держите?
Возможно вы удаляете не того зомби из массива, соответственно на него ссылка остаётся, а когда вы опять пытаетесь его удалить, то выскакивает ошибка.
Тот Zombies[i] в if`е это один из тех зомби, который содержится в массиве. Вот как создавался массив:
Код AS3:
private function createZombies(count:int) : void {
	for (var i = 0; i < count; i++) {
		Zombies[i] = Zombie;
		addChild(Zombies[i]);
		var randNumX: Number = Math.round(Math.random() * 780);
	        var randNumY: Number = Math.round(Math.random() * 580);
		Zombies[i].x = randNumX;
		Zombies[i].y = randNumY;
		trace("Создался " + (i+1) + " зомби с координатами (" + randNumX + ", " + randNumY + ").");
	}
}
В функции Zombie это public var Zombie:MovieClip = new zombie1();
zombie1 - класс самого зомби, к которому привязан символ в библиотеке.
Вызывается функция из главной функции: createZombies(3); Кстати зомби должно быть три на поле, но появляется один (с этим тоже ещё не разобрался). В trace показывается, что они трое появились по разным координатам, но виден только последний (второй заменил первого, третий второго).

knowzombie узнает какой именно зомби из массива Zombies столкнулся с пулей.
Код AS3:
private function knowzombi(k:int) : int {
	var temp:int = 0;
	for (var i = 0; i < Zombies.length; i++) {
		if (Zombies[i].hitTestObject(Bullets[k])) {
			temp = i;
			break;
		}
	}
	return temp;
}