Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 在对象碰撞时更改健康栏上scaleX的值_Actionscript 3_Flash_If Statement_Game Physics - Fatal编程技术网

Actionscript 3 在对象碰撞时更改健康栏上scaleX的值

Actionscript 3 在对象碰撞时更改健康栏上scaleX的值,actionscript-3,flash,if-statement,game-physics,Actionscript 3,Flash,If Statement,Game Physics,我一直在尝试各种不同的方法,使我的健康栏scaleX在达到目标时递增25% 到目前为止,我得到的最接近于else if语句。问题是actionscript在else-if语句中运行,并且没有停止,它执行所有的计算,并在每次我点击某个内容时使我的健康栏充满。我理解为什么会发生这种情况(如果AS3中的语句变为真,则其他语句变为真),但我不知道如何阻止它。 谢谢你的帮助 var health:Number = 0; var fullHealth:Number = 100; healthBar.sca

我一直在尝试各种不同的方法,使我的健康栏scaleX在达到目标时递增25%

到目前为止,我得到的最接近于else if语句。问题是actionscript在else-if语句中运行,并且没有停止,它执行所有的计算,并在每次我点击某个内容时使我的健康栏充满。我理解为什么会发生这种情况(如果AS3中的语句变为真,则其他语句变为真),但我不知道如何阻止它。 谢谢你的帮助

var health:Number = 0;
var fullHealth:Number = 100;

healthBar.scaleX = health / fullHealth;

//collision

    if(dog_mc.hitTestObject(deadRat_mc)){
    deadRat_mc.visible=false;

      if (healthBar.scaleX==0){
         healthBar.scaleX =+.25;

        }
        else if (healthBar.scaleX==.25){
            healthBar.scaleX =+.50;
        }
        else if (healthBar.scaleX==.50){
            healthBar.scaleX =+.75;
        }
        else if (healthBar.scaleX==.75){
            healthBar.scaleX =+1;

        }

}

使用数学,我猜你在某个地方复制了代码,但你不知道如何使用它,健康意味着控制健康栏的级别:

var health:Number = 0;
var fullHealth:Number = 100;
healthBar.scaleX = health / fullHealth;
if(dog_mc.hitTestObject(deadRat_mc))
{
    health += 25;
}

这就是你所需要的。

我用了很多方法。你的帖子是我尝试的第一件也是最明显的事情,它没有完成任何比例变化,只是停留在0。你不需要先增加运行状况,然后再设置scalex吗?只要此代码在enter帧或计时器中运行,顺序就无关紧要了。