java - Sprite 动画计时java swing

标签 java swing animation sprite animated-gif

我尝试使用 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/

相关文章:

用于从本地系统搜索所有 .doc 和 .docx 文件的 java 代码

java - JEdi​​torPane 在通过 BufferedReader 读取时不显示特殊分隔符

java - 如何清除 JTextArea?

java - 如何判断两个字符之间是否有空格?

android - notifyDataSetChanged() 上的动画 ListView 项目

ios - Cocos2d for iPhone 中高效的逐帧动画

java.lang.NoClassDefFoundError : org/springframework/core/env/ConfigurableEnvironment 错误

Java 正则表达式帮助

Java - 阻止 GSON 创建一个额外的线程

javascript - 基于时间的动画中取消运动的逻辑