2013-07-14 68 views
1

我正在写一个LWJGL应用程序,并且在使键盘和鼠标类正常工作时遇到了一些麻烦。 mouseWheelMoved,keyPressed和keyReleased方法永远不会被调用。我可以确认listener.update方法被调用。LWJGL键盘输入不能正常工作

在这个应用程序中,我将显示器嵌入到JFrame中,但即使我不这样做仍然无法正常工作,因此似乎不是问题所在。

控制台输出:

德鲁地图
键盘鼠标监听器初始化
(关键的几分钟按这里)
应用关闭请求
截止申请
渲染停止
渲染结束


渲染器初始化:

@Override 
public void run() { 
    try { 
     Display.setParent(canvas); 
     Display.create(); 
     Display.setResizable(false); 
     Display.setTitle("Display"); 
     GL11.glDisable(GL11.GL_DEPTH_TEST); 
     GL11.glOrtho(0, 1, 0, 1, 0, 1); 
     draw(); 
     listener.initialize(); 
    } catch (LWJGLException ex) { 
     System.out.println("Could not initialize renderer: " + ex.getMessage()); 
     Thread.currentThread().interrupt(); 
    } 
    do { 
     listener.update(); 
     if(shouldUpdate) 
      draw(); 
     Thread.yield(); 
    } while(!closing); 
    System.out.println("Renderer Stopping"); 
    try { 
     Display.destroy(); 
    } catch(Exception ex) { 
     System.out.println("Error while stopping renderer: " + ex.getMessage()); 
    } 
    listener.destroy(); 
    System.out.println("Renderer End"); 
} 


监听器类:

public void initialize() { 
    try { 
     Mouse.create(); 
     Keyboard.create(); 
     Keyboard.enableRepeatEvents(true); 
     System.out.println("Keyboard & Mouse listener initialized"); 
    } catch (LWJGLException ex) { 
     System.out.println("Could not initialize listener"); 
     Thread.currentThread().interrupt(); 
    } 
} 
public void update() { 
    while(Keyboard.next()) { // Never True 
     int key = Keyboard.getEventKey(); 
     if(Keyboard.getEventKeyState()) 
      keyPressed(key); // Never Called 
     else 
      keyReleased(key); // Never Called 
     System.out.println(Keyboard.getKeyName(key)); // Never Printed 
    } 
    int amount = Mouse.getDWheel(); // Always 0 
    if(amount != 0) 
     mouseWheelMoved(amount); // Never Called 
} 

回答

2

我想我需要调用 “Display.update()” 刷新键盘输入。

您可以省略此行为并通过调用Display.processMessages(),Mouse.poll()和Keyboard.poll()手动更新输入。

+0

很好找。消除不需要的缓冲区交换。 – Nikki