2014-12-06 110 views
17

我正在使用Monogame的多點觸控應用程序,其中多個用戶可以同時使用單獨的文檔/圖像/視頻在更大的多點觸控屏幕上工作,而且我想知道是否可以將手勢「上下文感知」也就是說,在牆的一側夾住文檔的兩個手指不應該影響某人搖動牆的另一側。是否有可能在Monogame/XNA中獲得「上下文」手勢?

方式Monogame的工作原理是,所有的輸入點被翻譯成手勢,其可以使用閱讀:

if (TouchPanel.IsGestureAvailable) 
{ 
    var gesture = TouchPanel.ReadGesture(); 
    // do stuff 
} 

有沒有一種方法,使限制在一定的點在屏幕上比劃,還是我需要自己實現這個嗎?例如,通過查看源代碼,似乎TouchPanelState類完成所有工作,但不幸的是它的構造函數是internal

+0

我不知道也沒有經歷任何XNA或Monogame編程,但是對於記錄來說,它似乎有一個'TouchPanel'靜態類,它有一個'GetState()'方法。也許這可能有助於實例化你想要的'TouchPanelState'類? – 2014-12-18 19:56:38

回答

2

該功能並非內置於MonoGame中,因爲它不是原始XNA的一部分。基本上,你需要多個由其窗口的子矩形定義的「邏輯」TouchPanel。然而,TouchPanel是靜態的,因此整個遊戲只有一個默認XNA。

好消息是,MonoGame做自己的手勢識別。所以,代碼就在那裏,你只需要對MonoGame做一些改變。

例如...
- 使TouchPanel成爲一個非靜態的類,可以使用給定的子類來分配。
- 添加所有TouchPanel方法的非靜態版本。
- 靜態方法重定向到TouchPanel的單例/實例,保留舊的API。
...現在您可以選擇分配更多不是整個屏幕的TouchPanel。

注:這不幫你,但MonoGame不會讓你有一個以上的操作系統窗口(僅在Windows據我所知)在這種情況下,靜電型觸摸屏的第一個窗口,有一個單獨的API訪問觸摸輸入/手勢的任何額外的窗口。

相關問題