【发布时间】:2014-09-08 00:30:05
【问题描述】:
我正在尝试在 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")));
}
下面的方法是“假定”在更新图像之间短暂暂停程序(这是从我在编程课程中获得的,我们必须为汽车在屏幕上移动的图像制作动画):
private void pause(int sleepTime) {
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
System.exit(-1);
}
}
这个程序似乎所做的只是暂停然后打印最后的掷骰子。它没有显示任何“中间”面孔。有没有人知道为什么这不起作用?
非常感谢任何帮助。
【问题讨论】:
-
diceImage是什么类型的?
-
diceImage 是一个 jLabel
-
你为什么不做一个 BufferedImage 然后把它放到 diceImage 中呢?然后将 BufferedImage 更新为一个新的,让它改变滚动的图像?