所以最近我一直在使用 Flash Builder 程序和 Flixel 引擎在 Flash 中开发游戏。不过,我遇到了一个奇怪的问题,首先运行的其中一个是我制作的解析器,它根据 .txt 文件中的二维数组为每个级别创建屏幕,并且由于某种原因,每行中的最后一个字母是在决定该索引代表什么的 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
,我打印thisIndex
..(的值trace("Current index is " + thisIndex);)
,并且只要它是被解析的行中的最后一个字母(使用split(",")
,即使它匹配其中一个switch
条件,也会运行默认条件并且没有任何反应。
有没有其他人看到过这样的事情,或者我只是犯了一个非常愚蠢的错误?