gpt4 book ai didi

java - 将类实现 ActionListener 转换为线程

转载 作者:行者123 更新时间:2023-12-01 14:17:34 29 4
gpt4 key购买 nike

我有一个简单的 2d 游戏类,如下所示:

public class Game extends JPanel implements ActionListener {
private Timer timr;

public Game(){
//other stuff
timr = new Timer(10, this);
timr.start();
}
//other methods including ActionListener-related ones
}

我想将 Game 作为线程运行,而不是使用 Timer() 进行计时,如何才能做到这一点并保留 ActionListener 函数?

最佳答案

不要将您的 UI 与其他游戏组件捆绑在一起。您需要很好地分离关注点。考虑有一个类来保存游戏中所有事物的表示,这就是您的游戏状态。您的 UI 应该只关心绘制当前游戏状态。您的游戏应该在一个循环中运行,在该循环中更新游戏状态,然后使用 UI 进行渲染。

class Game() {

World world; //holds state of things in game
UI ui;
long time;
long elapsed; //number of ms since last update

mainGameLoop() {

time = System.currentTimeInMillis();

while (gameRunning()) {
elapsed = System.currentTimeInMillis() - time;
time = System.currentTimeInMillis();
world.update(elapsed); //updates game state
ui.render(world); //draws game state to screen
}

}
}

关于java - 将类实现 ActionListener 转换为线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17984432/

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