为什么此代码有效(窗口在退出按钮上关闭)?
看来我的帖子大部分是代码,我不知道要添加什么细节。看来我的帖子大部分是代码,我不知道要添加什么细节。
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
,该值保持不变。它要么总是true要么总是false(更有可能)。
您的第一个版本在循环的每次迭代中评估!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/