2016-10-15 19 views
0

ПростоОбнаружения столкновений между объектом внутри фрагмента ролика, который находится в массиве против другого массива объектов

Я случайно помещены и двигающихся видеоклипов, которые будут называть жертва и у меня есть еще один набор случайных Moving видеоклипов у которых есть анимация атаки, я буду называть их нападавшими.

Жертвы случайно блуждают среди Нападавших в случайные времена, когда Асланты будут стрелять из клипа молнии, чтобы напасть на жертв. Именно в этот момент я пытаюсь проверить на столкновение между жертвами и нападающими молнии Болты.

Оба типа находятся в отдельном массиве, и перед проверкой массива и массивом без проблем я также проверил статический объект и объекты массива внутри MC без проблем. Однако я застрял при проверке массива против объектов массива внутри MC.

Код:

for(var j:int=0;j<NormalBubbleArray.length;j++){ 

for(var k:int=0;k<LightningStormArray.length;k++){ 

if(NormalBubbleArray[j].hitTestObject(LightningStormArray[k]).upbolt){ 
trace("hit") 

NormalBubbleArray.removeAt([j]); 
LightningStormArray.removeAt([k]); 

} 
} 
} 

Я также попытался

if(NormalBubbleArray[j].hitTestObject(LightningStormArray[k]).upbolt) 

и 10 других способов, чтобы попытаться написать его. Все еще не удача не уверена, если это моя петля или обнаружение столкновения на этом этапе. Он не дает ошибок при запуске, поэтому я предполагаю, что мой синтаксис - это нормально. Спасибо заранее.

Обновление: я возился с ним и понял, что я его завернул в попытку поймать, поэтому я не видел ошибку. теперь моя проблема в этом.

for(var j = 0; j<NormalBubbleArray.length;j++){ 

for(var k = 0; k<LightningStormArray.length;k++){ 

    if((LightningStormArray[k]).upbolt hitTestPoint(NormalBubbleArray [j]), true){ 
trace("hit") 
(NormalBubbleArray [j]).removeEventListener(MouseEvent.MOUSE_MOVE, ChildMouse); 
NormalBubbleArray.removeAt([j]); 
LightningStormArray.removeAt([k]); 

} 

} 

} 

Still Compiles, но когда приходит время обнаружить, я получаю следующую ошибку на выходе.

TypeError: Ошибка # 1006: значение не является функцией. at BubblesReloaded_fla :: MainTimeline/CollisionControl()

Помощь приветствуется. Я все еще занимаюсь этим.

ответ

0

Получил!

Tricky Devil.

Отладчик продолжал указывать на линию hittest, и это не имело ничего общего с реальной линией, в которой он был включен, но тем, что было в статусе if, вызвавшем проблему.

var Lstormpoints:int = 0; 
for(var j = 0; j<NormalBubbleArray.length;j++){ 
for(var k = 0; k<LightningStormArray.length;k++){ 
if(LightningStormArray[k].upbolt.hitTestPoint(NormalBubbleArray [j]), true){ 
trace("bubble is hit") 
NormalBubbleArray [j].removeEventListener(MouseEvent.MOUSE_MOVE, ChildMouse); 
NormalBubbleArray [j].gotoAndPlay(10)/// was (NormalBubbleArray [j]).gotoAndPlay(10) // was causing an error 
NormalBubbleArray.removeAt([j]); 
LightningStormArray.removeAt([k]); 

} 

} 

} 

Что меня отбросило, так это то, что отладчик продолжал указывать на инструкцию if как ошибку. То, что я не поймал, это пыталось сказать мне, что это была ошибка внутри оператора if. Я понял это после некоторой тяжелой трассировки. Я заметил, что это обнаруживает столкновение, но пузырь не действует так, как если бы он попал под удар, давая мне иллюзию, что он не обнаружил удар. линия gotoAndPlay оживляет смерть и, к сожалению, это была линия с проблемой. Просто счастлив, что я это сделал.