我用 Java 制作了我的第一个游戏 - 贪吃蛇,
它的主循环看起来像这样
while (true)
{
long start = System.nanoTime();
model.eUpdate();
if (model.hasElapsedCycle())
{
model.updateGame();
}
view.refresh();
long delta = (System.nanoTime() - start) / 1000000L;
if (delta < model.getFrameTime())
{
try
{
Thread.sleep(model.getFrameTime() - delta);
} catch (Exception e)
{
e.printStackTrace();
}
}
}
但在我的项目的要求中有一个响应点,所以我需要改变Thread.sleep()
到别的事情上,但我不知道如何以简单的方式做到这一点。
预先感谢您的任何建议。
我用 Java 做了一两个简单的游戏,为了处理主游戏循环,我使用了 SwingTimer
。计时器将允许您设置ActionListener https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html提供后被解雇delay
已经过去了。中间延迟将由您的帧速率得出。最基本的用法如下:
Timer timer = new Timer(delay, listener);
timer.start();
这会将初始延迟和中间延迟设置为相同的值。如果需要,您还可以将它们设置为不同的值,如下所示:
Timer timer = new Timer(delay, listener);
timer.setInitialDelay(0);
timer.start();
在上面的例子中,listener
启动后将尽快触发delay
此后之间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)