gpt4 book ai didi

java - 使用计时器在 Java 游戏中交替显示 2 张图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:21:00 27 4
gpt4 key购买 nike

我正在用 Java 开发一个简单的游戏。我有一个名为“Drawer”的类,用于每 50 毫秒重绘我保存在 BufferedImages 数组中的图像。

我有一种方法可以将播放器转换为播放器类中的大型播放器,代码是:

    public void playerEvolution() {
for (int i = 0; i < 5; i++) {
this.setImageIndex(15);
try {
Thread.sleep(500);
this.setImageIndex(17);
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
this.isHuge();
}

我想要每 0.5 秒交替显示 2 张图像,但在 GamePanel 中没有交替显示任何图像,只在花费 2.5 秒(0.5 * 5 循环)时显示最终图像。

有什么想法吗?

最佳答案

如果这是一个 Swing 应用程序(你不说),请使用 javax.swing.Timer 或 Swing Timer。切勿在主 Swing 事件线程(称为事件调度线程或 EDT)上调用 Thread.sleep(...)。在定时器的 ActionListener 中有一个 int count 变量,每次调用 actionPerformed(...) 时都会递增,如果计数 > 达到最大计数(这里是 5 * 2,因为你'重新来回交换)。

例如,

public void playerEvolution() {
int delay = 500; // ms
javax.swing.Timer timer = new javax.swing.Timer(delay , new ActionListener() {
private int count = 0;
private int maxCount = 5;

@Override
public void actionPerformed(ActionEvent evt) {
if (count < maxCount * 2) {
count++;
// check if count is even to decide
// which image to use, and then
// do your image swapping here
} else {
((javax.swing.Timer)evt.getSource()).stop();
}
}
});
}

关于java - 使用计时器在 Java 游戏中交替显示 2 张图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12437818/

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