gpt4 book ai didi

java - 尝试用 Java 制作骰子滚动动画

转载 作者:行者123 更新时间:2023-12-01 12:33:58 26 4
gpt4 key购买 nike

我正在尝试用 Java 为骰子滚动“制作动画”。我目前设置了一个图标(称为“diceImage”),当单击按钮(称为“diceRoll”)时,会更新为骰子面的新随机图像。我想做的是让它在几秒钟内多次改变图像(随机骰子面),然后停止在最终图像上。

我遇到的问题不是生成随机数或多次滚动它,而是在循环内多次更新图像。下面的代码,掷骰子 10 次,是我到目前为止所得到的:

private void diceRollActionPerformed(java.awt.event.ActionEvent evt) {                                         

for (int i = 1; i <= 10; i++) {
rollDice();
pause(100);
}
}

这链接到以下两个方法(第一个方法生成随机数,并设置图标图像):

private void rollDice() {

Random r = new Random();
int randomNumber = r.nextInt(6) + 1;

diceImage.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Game/Images/Dice " + randomNumber + ".png")));

}

下面的方法“应该”在更新图像之间短暂暂停程序(这是从我参加的编程类(class)中获取的,我们必须为汽车在屏幕上移动的图像制作动画):

private void pause(int sleepTime) {
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
System.exit(-1);
}
}

这个程序似乎所做的就是暂停,然后打印最终的骰子结果。它没有显示任何“中间”面孔。有人知道为什么这不起作用吗?

非常感谢任何帮助。

最佳答案

这个问题每天都会被问几次。如果您在事件分派(dispatch)线程中 hibernate ,则会阻止它完成其工作:对事件使用react并重新绘制屏幕。

你的动画应该在另一个线程中完成。阅读有关 concurrency in Swing 的教程,并使用 Swing 计时器。

关于java - 尝试用 Java 制作骰子滚动动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25711731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com