Хиттестинг работает нормально, но установка значений для одного и того же объекта приводит к ошибке? - PullRequest
0 голосов
/ 09 марта 2011

Я работаю над стрельбой по некоторым пулям, и тестирование столкновений работает отлично, это даже ранит зомби. За исключением одной проблемы, я хочу, чтобы пули исчезали, когда они попадают в зомби, это звучит легко, я уже тестирую их в классе "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 Ответ

0 голосов
/ 09 марта 2011

Я звонил в мувиклип, а не в класс, когда ранее добавлял маркеры где-то еще в моем коде.Итак, я просто сделал var newObject = newBullet;вместо пены newObject.addChild (newBullet);

...