2013-01-03 52 views
1

我使用名爲Gameplay的引擎創建FPS演示。我目前正試圖在引擎中定義captureMouse()函數,以便玩家可以環視地圖。我已經能夠將光標固定到窗口的中心並將其隱藏,但是當我移動鼠標時,屏幕(相機)在移動時似乎「震動」。經過對X11函數的修改之後,我發現我用來將光標移回窗口中心的XWarpPointer()函數正在向事件隊列中添加一個「鼠標移動」事件。X11:從隊列中刪除事件

X11問題:在事件週期捕獲事件之前,如何識別和刪除事件?

問題:有沒有人有類似的問題,並以不同的方式解決?如果是這樣,你做了什麼?

如果我不清楚,我很抱歉。我對X11沒有廣泛的瞭解,但我真的需要將其添加到引擎中,以便我可以將它添加到我的遊戲中。

回答

0

我想你正在使用XtAppMainLoop來處理你的事件。

這實際上是對XtAppNextEvent的調用,然後是XtDispatchEvent。

如果用調用XtAppNextEvent的循環替換XtAppMainLoop以獲取下一個事件並檢查其類型(XEvent結構的類型字段)。

如果您想處理事件調用XtDispatchEvent,請不要忽略它。

當XtAppGetExitFlag返回true(或添加自己的退出標誌)時,循環需要退出。

+0

如果我沒有弄錯你所描述的功能是Xtoolkit的一部分。但是,遊戲引擎使用純Xlib。這裏是我寫的代碼的帖子的鏈接:http://www.gameplay3d.org/forums/viewtopic.php?f=3&t=241&sid=fa488aa562f03ebd2f940b49d4128e58你必須下到第8篇文章。那就是代碼所在的地方。 – Aluthren

+0

我沒有意識到你正在使用遊戲庫。看看代碼,你是否覆蓋Game :: mouseEvent並返回true? – parkydr

+0

我重寫了我的項目源代碼中的函數,但我沒有明確返回true。你爲什麼要問? – Aluthren