我尝试使用 Swing 在 JAVA 中制作 Sprite 动画。下面的代码是一个 ImageIcon 数组,我将对其进行迭代以显示多个不同的图像(只有 2 个用于测试目的)。 但我不知道如何正确安排每次迭代的时间。我的意思是,当我编译我正在处理的标签的代码时,只显示数组的最后一个图像(显然),但我希望它显示第一个图像几毫秒,然后显示另一个图像。 我做了一些研究并看到了一些关于 Time 类的建议,但我真的不知道如何在这些情况下实现它。我还尝试使用 sleep,它在 C++ 中运行良好,但只提出了 thread.sleep,在这种情况下不起作用。
动画应该模拟一张扑克牌被转动(对于大富翁游戏)。
有人可以就此事给我一些意见吗?
import javax.swing.ImageIcon;
import javax.swing.JLabel;
public class Sprite2 {
private ImageIcon[] sprites;
private ImageIcon a = new ImageIcon("C:/Users/Guilherme/Desktop/G/FEUP/2º Ano/2nd semester/Eclipse repos/Sprite/src/images/ball.jpg");
private ImageIcon b = new ImageIcon("C:/Users/Guilherme/Desktop/G/FEUP/2º Ano/2nd semester/Eclipse repos/Sprite/src/images/transferir.jpg");
public Sprite2() {
sprites = new ImageIcon[] {a, b};
}
public void render(JLabel lbl) {
for (int i = 0; i < sprites.length; i++) {
lbl.setIcon(sprites[i]);
//sleep(1000); - Looking for a similar Java function which is able to delay each iteration and make it look like a gif
}
}
最佳答案
您可以使用 Swing 计时器,请参阅 How to Use Swing Timers更多细节。
您不应在事件调度线程 上使用sleep()
,因为它会阻止线程处理绘画和其他与 UI 相关的事件,并且 UI 将被卡住。有关详细信息,请参阅 The Event Dispatch Thread教程。
关于java - Sprite 动画计时java swing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24108644/