0

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

ありがとう!

4

2 に答える 2

2

Cases within your switch statement are missing a break; therefore, code will continue to execute through the switch statement.

This should be:

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;
}
于 2012-11-27T22:50:30.687 に答える
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;
}
于 2012-11-28T14:04:51.647 に答える