最近、私は Flash Builder プログラムと Flixel エンジンを使用して、Flash でゲームを作成しています。最初に実行されるのは、.txt ファイルの 2D 配列に基づいて各レベルの画面を作成するために作成したパーサーで、何らかの理由で、各行の最後の文字がそのインデックスが何を表すかを決定する switch ステートメントでは無視されます。
これは私が問題を抱えている部分です(各条件で何が起こるかは無関係です。文脈のために残しましたが、すべて正しく動作します):
var row:int;
var column:int;
var currentColor:int = 0;
for (row = 0; row < m_levelData.length; row++) {
for (column = 0; column < m_levelData[0].length; column++) {
var offset:FlxPoint = new FlxPoint(0, 0);
var thisIndex:String = m_levelData[row][column];
//trace("This Line is " + m_levelData[row]);
trace("Current index is " + thisIndex);
//trace(row + " " + column);
switch(thisIndex) {
case Statics.GRID_BIN:
offset.y = (spaceSize.y / Statics.SPRITE_SCALE - BinFront.SIZE.y / Statics.SPRITE_SCALE) / 2;
offset.x = (spaceSize.x/Statics.SPRITE_SCALE - BinFront.SIZE.x/Statics.SPRITE_SCALE) / 2;
var color:uint;
if (m_colors.length < currentColor) {
color = Statics.COLOR_BLACK;
trace("No color found");
} else {
color = m_colors[currentColor];
currentColor++;
trace("Color is " + color);
}
makeBin(spaceSize.x * column + offset.x + levelOffset.x, spaceSize.y * row + offset.y + levelOffset.y, color);
break;
case Statics.GRID_BUILDER:
offset.y = (spaceSize.y/Statics.SPRITE_SCALE - BuilderMain.SIZE.y/Statics.SPRITE_SCALE)/2
offset.x = (spaceSize.x/Statics.SPRITE_SCALE - BuilderMain.SIZE.x/Statics.SPRITE_SCALE) / 2;
makeBuilder(spaceSize.x * column + offset.x + levelOffset.x, spaceSize.y * row + offset.y + levelOffset.y);
break;
case Statics.GRID_CONVEYOR:
var length:int = 0;
if (column == 0 || m_levelData[row][column - 1] != Statics.GRID_CONVEYOR) {
for (i = column; i < m_levelData[row].length; i++) {
if (m_levelData[row][i] == Statics.GRID_CONVEYOR) {
length++;
} else {
break;
}
}
offset.y = (spaceSize.y/Statics.SPRITE_SCALE - Statics.GRID_SIZE.y/Statics.SPRITE_SCALE)/2
offset.x = (spaceSize.x/Statics.SPRITE_SCALE - Statics.GRID_SIZE.x/Statics.SPRITE_SCALE) / 2;
makeConveyor(spaceSize.x * column + offset.x + levelOffset.x, spaceSize.y * row + offset.y + levelOffset.y, length);
}
break;
default:
trace("Nothing at this index, it was " + thisIndex);
}
Statics.GRID_BIN、Statics.GRID_CONVEYOR、および Statics.GRID_BUILDER はすべて定数文字列 (それぞれ「a」、「b」、および「c」) であり、これはすべて機能するはずであることがわかっています。パーサー。さて、それに対するあなたの即座の反応は、問題は私のパーサーにあるということですが、それ以外の何かが少しおかしいのではないかと私は疑っています。の前に..(switch
の値を出力し、それが解析された行の最後の文字である場合は常に ( を使用して、条件の 1 つに一致する場合でも、デフォルトの条件が実行され、何も起こりません。thisIndex
trace("Current index is " + thisIndex);)
split(",")
switch
他の誰かがこのようなものを見たことがありますか、それとも私は本当にばかげた間違いを犯していますか?