Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 如何调用AS3交换机_Actionscript 3_Switch Statement - Fatal编程技术网

Actionscript 3 如何调用AS3交换机

Actionscript 3 如何调用AS3交换机,actionscript-3,switch-statement,Actionscript 3,Switch Statement,我对switch语句有点纠结(我以前从未使用过switch)。当我的目标到达舞台的顶部或底部时,我有一个命中测试。当这种情况发生时,我想切换状态(所讨论的游戏是一个简单的平台,允许玩家在到达新表面时切换重力。下面是我当前的代码: { ... if(player.hitTestObject(bottom)) { //Switch state to normal } if(player.hitTestObject(top)) { //

我对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;
}

谢谢!

您的switch语句中的案例缺少一个
中断
;因此,代码将继续通过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;
}

switch语句中的事例缺少一个
中断
;因此,代码将继续通过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;
}

我更喜欢少一些变量,如果我能侥幸逃脱的话

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;
}

我更喜欢少一些变量,如果我能侥幸逃脱的话

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;
}

当我运行这个时,我得到“正常”在我的输出中。但是如果我通过top或bottom,则不会发生任何变化。这可能是我的hitTest对象现在的问题吗?这将测试case
NORMAL
inversed
。如果要通过
top
bottom
,请添加其他
case
语句。case常量与开关表达式匹配(
myGrav
)是执行的。对不起,我说错了。当我说通过顶部或底部时,我的意思是当我的玩家实际通过点时(满足命中测试),不将“top”和“bottom”传递给我的switch语句。在switch代码执行内部或之后,将
myGrav
设置为null或默认值,以防止案例再次执行。运行此操作时,我得到“Normal”在我的输出中。但是如果我通过top或bottom,则不会发生任何变化。这可能是我的hitTest对象现在的问题吗?这将测试case
NORMAL
inversed
。如果要通过
top
bottom
,请添加其他
case
语句。case常量与开关表达式匹配(
myGrav
)是执行的。对不起,我说错了。当我说通过顶部或底部时,我的意思是当我的玩家实际通过点时(满足命中测试),而不是将“top”和“bottom”传递给我的switch语句。在switch代码执行内部或之后,将
myGrav
设置为null或默认值以防止案例再次执行。我想这就是我想要的,对吗?因此,如果“player”点击“bottom”,状态将切换为正常。然后应用正常案例中的更改。我认为这就是我想要的,对吗?所以如果“玩家”点击“底部”,状态将切换到正常。然后应用正常情况下的更改。我认为情况总是恒定的。这很酷-回答很好。@Jasonturges不,开关的情况部分是对开关部分中定义的内容的评估。在这种情况下,从顶部开始的第一个从评估到真正的胜利。我认为案例总是恒定的。这很酷-回答得很好。@jasonturges不,切换的案例部分是对切换部分中定义的内容的评估。在这种情况下,第一个从自上而下到评估到真正的胜利。