java - 如何使用 Thread.sleep 显示简单的掉落动画?

标签 java thread-sleep

我正在制作游戏板,我想展示游戏板动画, 动画是一个物体像这样往下掉,


时间=0
○○○
○○○
○○○
○○○
时间=1
●○○
○○○
○○○
○○○
时间=2
●○○
●○○
○○○
○○○
时间=3
●○○
●○○
●○○
○○○
时间=4
●○○
●○○
●○○
●○○


 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 中的步骤,这是什么问题?我该如何解决?或者有什么其他简单的方法可以做到吗?谢谢。
绘图板方法:

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

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


时间=0,1,2,3
○○○
○○○
○○○
○○○
时间=4
●○○
●○○
●○○
●○○


最佳答案

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

关于java - 如何使用 Thread.sleep 显示简单的掉落动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5521827/

相关文章:

java - 对 Eclipse 的 "Run on server"部署进行故障排除

java - 为 Spring AOP 切面提供超时执行

Java TextArea 动态更新

java - Java中如何同步Thread.sleep和Thread.interrupt?

multithreading - 单元测试一个线程类,避免在测试中使用 Thread.Sleep()?

docker - 无法在 alpine linux 上使用 openjdk 8 初始化类 sun.awt.X11FontManager

java - 如何获得weka簇质心的值(value)

c# - 在 C# 中 sleep 直到

java - `Thread.sleep` 与 Project Loom for Java 中的虚拟线程(纤程)不同吗

java - Java 中的 Timer 类如何对系统时钟敏感?