1

私の質問は、どちらを使用するのが良いですか? switch ステートメントの適切な使用方法。変数を使うべきか使わないべきかなど、よろしくお願いします。「たくさんの説明が必要なためランダムなテキストです。そうしないと投稿できません。」

switch(level_id)
{
    case 1:
        stage.addChild(new lvl(50, 200, 100, level_id));
        break;
    case 2:
        stage.addChild(new lvl(50, 200, 100, level_id));
        break;
    case 3:
        stage.addChild(new lvl(50, 200, 100, level_id));
        break;
    case 4:
        stage.addChild(new lvl(50, 200, 100, level_id));
        break;
    case 5:
        stage.addChild(new lvl(50, 200, 100, level_id));
        break;
    case 6:
        stage.addChild(new lvl(50, 200, 100, level_id));
        break;
    case 7:
        stage.addChild(new lvl(50, 200, 100, level_id));
        break;
    default:
        break;
}

また

switch(level_id)
{
    case 1:
        x = 50; y = 200; x = 100;
        break;
    case 2:
        x = 50; y = 200; x = 100;
        break;
    case 3:
        x = 50; y = 200; x = 100;
        break;
    case 4:
        x = 50; y = 200; x = 100;
        break;
    case 5:
        x = 50; y = 200; x = 100;
        break;
    case 6:
        x = 50; y = 200; x = 100;
        break;
    case 7:
        x = 50; y = 200; x = 100;
        break;
    default:
        break;
}
stage.addChild(new lvl(x, y, z, level_id));

私が最終的にやったこと(編集)

最終結果、みんなありがとう

var config:Object = {
               "1":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "2":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "3":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "4":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "5":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "6":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "7":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "8":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 }
            };

            stage.addChild(new lvl( 
                        config[level_id].paddWidth,
                        config[level_id].blockWidth,
                        config[level_id].blockHeight,
                        level_id
                        ));
4

4 に答える 4

1

一部の配列にすべての値を格納することもできます。インデックスを介してそれらにアクセスします。

var lvlx:Array = [50, 51, 52, 53, 54, 55, 56, 57];
var lvly:Array = [100, 101, 102, 103, 104, 105, 106, 107];
var lvlz:Array = [150, 151, 152, 153, 154, 155, 156, 157];

var lvlIndex:int = level_id - 1;
stage.addChild(new lvl(lvlx[lvlIndex], lvly[lvlIndex], lvlz[lvlIndex]));

2次元配列にすることもできますが、x、y、zごとの配列は単純で、オブジェクトを配列に格納するよりも高速だと思いました。

本当に良い(そして速い)オプションは、簡単な表記でベクトルを使用することです:

var lvlx:Vector.<int> = new <int>[50, 51, 52, 53, 54, 55, 56, 57];
于 2012-06-21T23:30:26.620 に答える
1

別のオプションは(テストされていないコード)かもしれません:

var config:Object = {
   "1":{ "x":50, "y":100, "z":150 },
   "2":{ "x":51, "y":101, "z":151 },
   "3":{ "x":52, "y":102, "z":152 },
   "4":{ "x":53, "y":103, "z":153 },
   "5":{ "x":54, "y":104, "z":154 },
   "6":{ "x":55, "y":105, "z":155 },
   "7":{ "x":56, "y":106, "z":156 },
   "8":{ "x":57, "y":107, "z":157 }
};
x = config[level_id].x;
y = config[level_id].y;
z = config[level_id].z;
stage.addChild(new lvl(x, y, z));
于 2012-06-21T23:42:22.867 に答える
0

まったく別のアプローチとして、Levelプロパティとメソッドを持つクラスをx作成しyます。zload

次に、ゲーム内のすべてのレベルのインスタンスを適切な値で作成し、関連するレベルをロードします。

サンプル:

public class Level
{
    public x:int;
    public y:int;
    public z:int;

    public function Level(x:int, y:int, z:int)
    {
        this.x = x;
        this.y = y;
        this.z = z;
    }

    public function load(stage:Stage):void
    {
        // This is where the Level will do resource consuming stuff, like get
        // added to the stage, create level elements, etc.
    }
}

次に、すべてのレベルを作成して配列に保存します。

var levels:Array = [
    new Level(50, 100, 120),
    new Level(65, 70, 12)
];

つまり、次のようなものを用意するだけで、必要なレベルを簡単にロードできます。

function loadLevel(lvl:int):Level
{
    var level:Level = levels[lvl];
    level.load();

    return level;
}
于 2012-06-21T23:14:42.127 に答える
0

あなたのケースには大きな違いはありませんが、後者を使用します。この方法ではコードの重複が少なくなります (つまり、レベルの親を変更したい場合はどうなるでしょうか。そのためstage.addChildsomeContainer.addChild最初のメソッドではステージのすべてのインスタンスを someContainer に置き換える必要があります。場所のみ)。

コード行が気になる場合は、変数を 1 行に格納できます。

x = 57; y = 107; z = 157;
于 2012-06-21T23:03:23.910 に答える