AS3中的简单变量没有正确增加

时间:2013-09-30 22:56:14

标签: actionscript-3 variables

好吧,所以我有一些代码说如果执行命中测试,变量会增加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文件和类中。

1 个答案:

答案 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;

更多代码肯定会有所帮助。