作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 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/
我是一名优秀的程序员,十分优秀!