我正在使用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 ) );
}
}
}
}
}
答案 0 :(得分:1)
看起来你的括号搞砸了。 for each只执行enemy.moveDownABit()
行。在for循环开始后,将括号移到右上方。
使用现在的支架,敌人超出范围,这就是为什么它是Null,这就是错误告诉你的。