1

我正在制作一个游戏板,我想展示游戏板动画,动画是一个像这样掉下来的对象,


time=0
○○○<br> ○○○<br> ○○○<br> ○○○<br> time=1
●○○<br> ○○○<br> ○○○<br> ○○ ○<br> time=2
●○○<br> ●○○<br> ○○○<br> ○○○<br> time=3
●○○<br> ●○○<br> ●○○< br> ○○○<br> time=4
●○○<br> ●○○<br> ●○○<br> ●○○


 for (int row = 0; row < ROW_MAX; row++) {
      for (int col = 0; col < COLUMN_MAX; col++) {
          TempBoard[row][col]= hollow;
       }
 }
drawBoard(TempBoard);
Thread.sleep(1000);
TempBoard[0][column] = solid;
drawBoard(TempBoard);
Thread.sleep(1000);
TempBoard[1][column] = solid;
drawBoard(TempBoard);
Thread.sleep(1000);
TempBoard[2][column] = solid;
drawBoard(TempBoard);
Thread.sleep(100);
TempBoard[3][column] = solid;
drawBoard(TempBoard);
Thread.sleep(1000);

但我无法得到我想要的,它直接显示时间=4,错过了时间=0-3的步骤,这是什么问题?我该如何解决?或者任何其他简单的方法来做到这一点?谢谢你。
画板方法:

public void drawBoard(Disc[][] updateBoard) {
    Disc[][] tempBoard = updateBoard;
    for (int row = 0; row < ROW_MAX; row++) {
        for (int col = 0; col < COLUMN_MAX; col++) {
            if (tempBoard[row][col] == hollow) {
                //jbtBoard[row][col].setIcon(hollowImg);
                System.out.println(hollow);
            } else if (tempDisc[row][col] == solid) {
                //jbtBoard[row][col].setIcon(solidImg);
                System.out.println(solid);
        }
    }
}

但是,当我运行代码时,输​​出是这样的:


time=0,1,2,3
○○○<br> ○○○<br> ○○○<br> ○○○<br> time=4
●○○<br> ●○○<br> ●○ ○<br> ●○○


4

2 回答 2

5

如果您在 UI 线程上执行此操作(在一个回调中),该过程将像您所说的那样运行,但 UI 线程将只能在您的代码完成后显示您提供的绘图命令 - 这实际上意味着显示版本 4 .

于 2011-04-02T07:45:22.063 回答
0

您不应该使用 Thread.sleep()。

您应该使用Swing Timer

于 2011-04-02T16:25:40.847 回答