2017-06-14 72 views
0

我知道,你可以使用跟蹤窗口大小調整操作:lwjgl3窗口調整最終事件?

glfwSetWindowSizeCallback(window, wsCallback = new GLFWWindowSizeCallback() { 
     @Override 
     public void invoke(long window, int w, int h) { 
      LOG.info("window resized"); 
      if (w > 0 && h > 0) { 
       width = w; 
       height = h; 
      } 
     } 
    }); 

然而,這樣的invoke方法被潛在調用數百次,我只希望最後一場比賽,以保存新的大小在配置。我如何做到這一點,而不使用某種類型的延遲機制,例如在進一步調用調用時刷新的一秒定時器?

回答

1

GLFW回調的設置方式是在每次調用glfwPollEvents()時刷新。如果您只想在最終更新中設置配置變量,則本身並不可行。我想有一個void dispose()方法中,你可以調用這個:

public void dispose() { 
    try (MemoryStack stack = stackPush()) { 
     IntBuffer width = stack.ints(1); 
     IntBuffer height = stack.ints(1); 
     glfwGetWindowSize(windowID, width, height); 
     configuration.width = width.get(); 
     configuration.height = height.get(); 
    } 
} 

這允許你當你想關閉該窗口,一旦設置的配置數據。這種技術的缺點是,如果應用程序崩潰或未調用方法dispose(),配置數據不會被保存。