为什么我得到参数hitTestObject必须是非null错误?

时间:2012-04-21 03:04:26

标签: actionscript-3 flash

我正在使用Actionscript3和Adobe Flash CS5.5创建我的第一个Flash游戏。游戏的概念就是你在飞船上,你试图避免小行星。你避开小行星的时间越长,获得的点越多。我知道这不是很原始。突然间,今天我收到了这个错误:

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

这个错误的作用是当太空船击中小行星时没有任何反应。宇宙飞船正好飞过。

我不知道如何解决这个问题。这是我的代码:

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 ) );
            }
        }
    }
}

}

1 个答案:

答案 0 :(得分:1)

看起来你的括号搞砸了。 for each只执行enemy.moveDownABit()行。在for循环开始后,将括号移到右上方。

使用现在的支架,敌人超出范围,这就是为什么它是Null,这就是错误告诉你的。