【发布时间】:2016-04-04 04:04:46
【问题描述】:
所以我正在尝试创建一个简单的三消游戏。 我创建了一个 Actor 类 Tile 来存储有关行和列的图像和数据,并创建了另一个类 GameField,它具有一个大小为 9 * 9 的 tile 数组。
我创建了一个名为交换图块的函数来交换图块,如下所示,但它有一个奇怪的行为,即在交换任何两个图块后,其中一个响应点击,而另一个停止响应进一步的点击。
这里是Tile类的输入监听器和gamefield的swap tile函数:
addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
setActiveSprite(row, column, colour);
System.out.println("clicked" + "row :" + row + "column" + column);
return false;
}
});
public void setActiveSprite(int r, int c, int colour){
System.out.print(colour);
if (!(gf.activeTile.colour==0)){
gf.swapTiles(r, c, colour);
gf.activeTile.colour=0;
} else {
gf.activeTile.setAll(r, c, colour);
}
}
public void swapTiles(int r, int c, int colour) {
gameField[activeTile.row][activeTile.column].addAction(Actions.moveTo(
(40 + ((gameField[r][c].getHeight() * c) + (10 * c))),
(200 + (gameField[r][c].getWidth() * r)),
0.5f));
//setting the new position of clicked tile
gameField[r][c].addAction((Actions.moveTo(
(40 + ((gameField[r][c].getHeight() * activeTile.column) + (10 * activeTile.column))),
(200 + (gameField[r][c].getWidth() * activeTile.row)),
0.5f)));
Tile Temp = gameField[activeTile.row][activeTile.column];
gameField[activeTile.row][activeTile.column] = gameField[r][c];
gameField[activeTile.row][activeTile.column].row = activeTile.row;
gameField[activeTile.row][activeTile.column].column = activeTile.column;
gameField[r][c] = Temp;
gameField[r][c].row = r;
gameField[r][c].column = c;
}
请通知我我认为 swapTile 函数中可能存在的错误
【问题讨论】: