好吧,所以我有一些代码说如果执行命中测试,变量会增加1.但是,当我运行它时,我会得到像1,1,1,2,5这样的疯狂数字,3,2,5,2,3,4,1,1 没有模式,它只是随机的。这是代码:
public function loop(e:Event)
{
y += speed;
if (y > stage.stageHeight)
{
setupAsteroid(false);
}
//hittest for the asteroid
if (hitTestObject(target))
{
stageRef.addChild(new Explosion(stageRef, x, y));
trace("Hit");
kills ++;
trace(kills);
if(kills == 3){
trace("Success");
}
}
我已经在所使用的函数中包含了所有代码,并且如您所见,并不是所有这些代码都是必需的。此外,变量被正确声明为
private var kills:Number = 0;
在同一个.as文件和类中。
答案 0 :(得分:0)
您向舞台添加了Explosion
,但没有迹象表明您从舞台上删除了任何内容,或者至少停止了对hitTest
的检查。另外我猜你的函数loop(e:Event)
会监听ENTER_FRAME
事件,在这种情况下,如果你没有删除hitTest
将在每一帧返回true的阶段中的任何内容每帧创建一个新的Explosion
。为什么不直接向目标添加公共变量,例如public var destroyed:boolean = false;
并重新构建hitTest
以阅读if(hitTestObject(target) && !target.destroyed)
,并在条件正文中添加target.destroyed = true;
更多代码肯定会有所帮助。