如何调用AS3 Switch

时间:2012-11-27 22:35:53

标签: actionscript-3 switch-statement

我在使用switch语句时遇到了一些困难(我之前从未使用过switch)。当我的物体到达舞台的顶部或底部时,我有一个命中测试。当发生这种情况时,我想切换状态(有问题的游戏是一个简单的平台游戏,允许玩家在击中新表面时切换重力。下面是我当前的代码:

{
    ...

    if(player.hitTestObject(bottom)) {
        //Switch state to normal
    }
    if(player.hitTestObject(top)) {
        //Switch state to inverted
    }
}

switch (myGrav){
    case "NORMAL":
        trace("Normal")
        player.gotoAndPlay(1);
        oktoJump = false;
        player.y = 376.5;

    case "INVERTED":
        trace("Inverted")
        player.gotoAndPlay(8);
        oktoJump = false;
        player.y = 12;
}

谢谢!

2 个答案:

答案 0 :(得分:2)

您的switch语句中的案例缺少break;因此,代码将继续通过switch语句执行。

这应该是:

var myGrav:String = "NORMAL";

if (player.hitTestObject(bottom))
    myGrav = "NORMAL";

if (player.hitTestObject(top))
    myGrav = "INVERTED";

switch (myGrav)
{
    case "NORMAL":
        trace("Normal")
        player.gotoAndPlay(1);
        oktoJump = false;
        player.y = 376.5;
        break;

    case "INVERTED":
        trace("Inverted")
        player.gotoAndPlay(8);
        oktoJump = false;
        player.y = 12;
        break;
}

答案 1 :(得分:1)

当我能摆脱它时,我更喜欢变量。

switch (true){
    case (player.hitTestObject(bottom)):
        trace("Normal")
        player.gotoAndPlay(1);
        oktoJump = false;
        player.y = 376.5;
        break;

    case (player.hitTestObject(top)):
        trace("Inverted")
        player.gotoAndPlay(8);
        oktoJump = false;
        player.y = 12;
        break;
}