Estoy creando mi primer juego flash con Actionscript3 y Adobe Flash CS5.5. El concepto del juego será simplemente que estás en una nave espacial e intentas evitar los asteroides. Cuanto más tiempo evites los asteroides, más puntos obtendrás. Sé que no es muy original. De repente hoy recibí este error:

TypeError: Error #2007: Parameter hitTestObject must be non-null.

Lo que hace este error es que cuando la nave espacial choca contra los asteroides no sucede nada. La nave espacial simplemente pasa volando.

No tengo idea de cómo solucionar esto. Aquí está mi código:

public class AvoiderGame extends MovieClip
{   
    public var army:Array;
    public var gameTimer:Timer;
    public var avatar:Avatar;

    public function AvoiderGame()
    {
        army=new Array();

        avatar=new Avatar();
        addChild( avatar );
        avatar.x=mouseX;
        avatar.y=mouseY;

        gameTimer= new Timer (25);
        gameTimer.addEventListener(TimerEvent.TIMER, onTick);
        gameTimer.start();

    }
    public function onTick(timerEvent:TimerEvent):void
    {
        if (Math.random() < 0.1)
        {
            var randomX:Number = Math.random() * 400;
            var newEnemy=new Enemy(randomX,-15);
            army.push( newEnemy );
            addChild( newEnemy );
        }

            avatar.x=mouseX;
            avatar.y=mouseY;
            for each ( var enemy:Enemy in army ) 

            enemy.moveDownABit();
        {
            if (avatar.hitTestObject( enemy ))
            {
                gameTimer.stop();
                dispatchEvent( new AvatarEvent( AvatarEvent.DEAD ) );
            }
        }
    }
}

}

0
TyroneBiggums 21 abr. 2012 a las 07:04

1 respuesta

La mejor respuesta

Parece que tus corchetes están desordenados. El para cada uno solo está haciendo la línea enemy.moveDownABit(). Mueva su corchete por encima de eso a la derecha después de que comience el bucle for.

Con el corchete donde está ahora, el enemigo está saliendo del alcance, por lo que es Nulo, que es lo que te dice el error.

1
M. Laing 21 abr. 2012 a las 07:17
¡DECIR AH! Wow, sabía que iba a ser algo estúpido que simplemente me perdí. Muchas gracias. He estado sentado aquí frustrado durante al menos 2 horas.
 – 
TyroneBiggums
21 abr. 2012 a las 07:24
Nos pasa a todos. Me alegro de haber podido ayudar.
 – 
M. Laing
21 abr. 2012 a las 07:24