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);

しかし、私は欲しいものを得ることができません.time=4を直接示し、time=0-3のステップを逃しました.何が問題なのですか? どうすれば修正できますか?またはそれを行う他の簡単な方法はありますか?ありがとうございました。
drawBoard メソッド:

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スレッドでこれを(1つのコールバック内で)実行している場合、手順はあなたが言ったように実行されますが、UIスレッドはコードが終了した後に指定した描画コマンドのみを表示できます-これは事実上バージョン4を表示することを意味します.

于 2011-04-02T07:45:22.063 に答える
0

Thread.sleep() を使用しないでください。

Swing Timerを使用する必要があります。

于 2011-04-02T16:25:40.847 に答える