Java 2D 游戏 - 定时器与线程?

标签 java multithreading timer

大家好,我正在制作我的第一个 2D Java 游戏,目前我正在使用计时器来控制和更新所有内容。我想知道哪种方法最适合 2D Java 游戏,定时器还是线程?目前我的 gameCanvas 类中有一个 Timer,它渲染/绘制所有内容以及检查碰撞。然后我也有一个 Timer 用于我的播放器,用于移动他。

我使用计时器的唯一原因是因为我是 Java 编程的新手,而且考虑到我必须提出的所有内容,这似乎是当时最简单的方法:

Timer timer = new Timer(5,this);
timer.start();

你们会推荐什么?

最佳答案

pst 关于这两种方法的优缺点的说法是绝对正确的。

不过,我也不推荐。我会使用“专为游戏设计”的游戏引擎,例如 Slick2D ,它将极大地帮助您了解游戏的更新和逻辑、主游戏循环的结构,以及处理您将遇到的许多低级问题。

如果您正在考虑将 Swing 用于游戏,我也会远离它,原因已列明 in my answer here .

Slick2D预先构建来处理计时问题,并计算出渲染帧之间的增量等。您还可以获得很多不必自己构建的好东西,例如输入处理(键盘,鼠标, Controller )、加速图形(您的游戏将自动受益于图形加速,因为引擎会为您处理这件事),当您准备好播放音频时,它还有一个很棒的音频库。

自己写所有这些东西会让你想哭。除非你真的很喜欢构建引擎本身(而不是想花时间构建游戏逻辑本身),否则构建引擎会花费大量时间,而你只能使用现成的成熟工具。

关于Java 2D 游戏 - 定时器与线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7788927/

相关文章:

java - 将 Java 项目迁移到 AspectJ (Eclipse AJDT)

java - findbugs 反对匿名内部类

multithreading - 托管 C++ 中的 C# 的 lock()

javascript - 这个 javascript 函数中的 setInterval() 和clearInterval() 有什么问题吗?清除间隔返回未定义

c# - 在指定时间间隔后调用事件

java - 使用 Graphics2D 绘制时矩形的实际边界

java - 打印带有未格式化字符 ("\t"而不是制表符的字符串)

c# - Monitor.Enter(object,ref bool)锁获取的实现和顺序

c++ - 如何解决 std::get<>() 缺乏并发规范的问题

linux - 在哪里更改HZ的值?