Хиттестинг работает нормально, но установка значений для одного и того же объекта приводит к ошибке?
Я работаю над стрельбой по некоторым пулям, и тестирование столкновений работает отлично, это даже ранит зомби. За исключением одной проблемы, я хочу, чтобы пули исчезали, когда они попадают в зомби, это звучит легко, я уже тестирую их в классе "bulletContainer", ну, короче говоря, я вызываю bulletContain[a].killBullet(); и выходной dialouge говорит, что это не функция (я точно знаю, что это функция и класс "bulletClass", который он сам загружает правильно). Кажется, как только я создаю пулю, чтобы выстрелить, она имеет собственный ум и не слушает какие-либо переменные, которые я изменяю внутри, чтобы я сказал, что она должна исчезнуть /killBullet()
Вот фрагменты моего кода, пожалуйста, прокомментируйте, если вы чувствуете, что вам нужно больше (хотя и не так много)
BulletContainer Class(Showing Just testCollosion Function):
//Collision Tester/////////////////////////////////////////////
private function testCollision(){
//Get number of bullets on screen
var numBullets = bulletContain.length;
//Define a local variable for ease of reference
var localZombieContain = Object(root).zombieContain.zombieContain
var numZombies:Number = localZombieContain.length;
//Loop through every bullet for collision test
for(var a:Number = 0; a < numBullets; a++){
//Loop through every zombie & hit test to see if bullet is hitting
for(var b:Number = 0; b < numZombies; b++){
var killBullet:Boolean = false;
if(localZombieContain[b].hitTestObject(bulletContain[a])){
//Tell zombie it has been hit
localZombieContain[b].hurtZombie();
//Tell Bullet its dead for garbage
killBullet = true;
}
if(killBullet){
bulletContain[a].killBullet();
trace("BULLET DIED");
}
}
}
BulletClass (показывает все из bulletClass): (игнорирует случайные переключатели (), коды для последующего использования в целях развития)
package com{
import flash.display.*
import flash.net.*
import flash.utils.*
import flash.events.*
public class bulletClass extends MovieClip{
public var dead = 0;
var moveBulletInt;
public function bulletClass(type:Number) {
//Declare bullet types from library
var tmpBullet1 = new bullet1;
switch(type){
case 1:
addChild(tmpBullet1);
break;
}
//Move this bullet
moveBulletInt = setInterval(moveBullet, 10);
}
public function killBullet(){
clearInterval(moveBulletInt);
trace("BULLET DIED");
}
private function moveBullet(){
if(dead == 0){
this.x += 15 * Math.sin((this.rotation - 90) * (Math.PI / 180));
this.y += 15 * Math.cos((this.rotation - 90) * (Math.PI / 180));
}
if(dead == 1){
//clearInterval(moveBulletInt);
this.x = -100
this.y = -100
}
}
}
}
1 ответ
Я звонил в мувиклип вместо того, чтобы вызывать класс, когда я ранее добавил маркеры где-то еще в моем коде. В итоге я просто сделал var newObject = newBullet; вместо пены newObject.addChild(newBullet);