为什么这段代码有效(窗口在退出按钮上关闭)?
<小时/>看起来我的帖子主要是代码,我不知道要添加哪些细节。看起来我的帖子主要是代码,我不知道要添加哪些细节。
public class Main
{
public static void main (String[] args)
{
start(); //Create a window
render(); //Run the game
close(); //End the game
}
private static void start()
{
Window SD = new Window();
SD.Launch();
}
private static void render()
{
while(!Display.isCloseRequested() && !Keyboard.isKeyDown(Keyboard.KEY_ESCAPE))
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
Display.update();
}
}
private static void close()
{
Display.destroy();
}
}
但是这段代码没有:
//
while(!Display.isCloseRequested() && !Input.ESC)
//
public class Input
{
public static boolean ESC = Keyboard.isKeyDown(Keyboard.KEY_ESCAPE);
}
最佳答案
在第二个版本中,Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)
被评估一次,并将其值分配给 ESC
,该值保持不变。它要么总是正确,要么总是错误(更有可能)。
您的第一个版本会在循环的每次迭代中评估 !Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)
,因此它可以检测何时实际按下 ESC。
如果将 ESC 更改为静态方法而不是静态变量,则表达式将在每次调用 ESC()
时进行计算,并且两个循环都将起作用。
while(!Display.isCloseRequested() && !Input.ESC())
//
public class Input
{
public static boolean ESC()
{
return Keyboard.isKeyDown(Keyboard.KEY_ESCAPE);
}
}
关于java - while 循环中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27722179/