所以我做了一个基于文本的小冒险,它目前正占据我的CPU的45%-50%,因为它正在不断检查你的输入。所以我需要某种方式来限制帧速率/更新速率。当我尝试将thread.sleep(15)放入检查玩家输入的循环时,它会停止对传递给它的输入做任何事情。我已经看到了类似的问题,但给出的答案仅适用于实际具有渲染方法的游戏,并且即使使用jtextareas和jtextfeilds,我也不需要任何渲染方法。因此,提供的解决方案对我不起作用。帮助
答案 0 :(得分:0)
Thread.sleep完全暂停当前线程,当你使用thread.sleep时,你可以防止线程中发生任何事情。因此没有检测到输入。这是我修改的游戏循环,用于删除渲染更新部分。同时(真实)方法非常滞后,通常不推荐。
如果要激活它,可以调用此循环。
public static void main(String[] args) {
loop(0);
}
public static void loop(int looptype) {
long lastTime = System.nanoTime();
double ns = 1000000000 / 60.0;
double delta = 0;
long timer = System.currentTimeMillis();
while(running) {
long now = System.nanoTime();
delta += (now - lastTime) / ns;
lastTime = now;
while (delta >= 1) {
if (looptype == 0) {
*something*
if (input.equals("1")) {
loop(1);
} else if (input.equals("2")) {
loop(2);
}
} else if (looptype == 1) loop1();
else if (looptype == 2) loop2();
delta--;
}
if (System.currentTimeMillis() - timer > 1000) {
timer += 1000;
}
}
}
public static void loop1() {
*something*
}
public static void loop2() {
*something*
}