2010-05-23 25 views
0

我有一個XNA項目,將在屏幕上繪製幾個對象。我希望用戶能夠與這些項目進行交互。所以我試圖建立一個方法來檢查鼠標結束的對象,然後觸發該對象的OnClick事件。針對手動OnClick事件啓動的最佳做法是什麼?

檢查上面的東西不是問題,但其中實際上把這個邏輯是最大的問題。

我最初的感覺是檢查應該由一個主對象來處理 - 因爲對於一個理想上只知道自己的對象來說,確定關於其他對象的信息是沒有意義的。但是,從主對象遠程調用OnClick事件似乎也是違反直覺的。

這種情況下的最佳做法是什麼?

感謝,
泰勒

回答

4

不要把邏輯的事件處理程序。相反,有事件處理程序調用另一個方法,通過點擊的對象作爲參數:

// inside the OnClick event handler 
ActOnObject(clickedObject); 

然後你就可以在其他地方調用相同的方法中的代碼,任何對象:

ActOnObject(GetObjectUnderMouse()): 
0

我可能會有一個類似於「ObjectManager」的類,該類將保存對象的集合並處理應該單擊的當前對象的查找,然後調用該對象的click功能。由於對象本身並沒有處理點擊(它可以但在我的例子中技術上是整個遊戲本身,或可能是ObjectManager是捕捉點擊的那個),那麼我只想把你想要點擊的對象稱爲

Object.Click(whatever parameters are logical for your situation) 
到底

我覺得我的建議非常類似的做法弗雷德裏克,但主要的區別是我個人比較喜歡的「對象」知道應該用點擊來完成,從而對調用函數對象本身 - 這可能是你會在上面建議的功能中做的...

0

那麼,對於圖形對象(紋理,精靈或類型)

public MyObject() 
{ 
    .... 

    public AreTheseMyCoordinates(int X, int Y); 

} 

其中,您將獲得鼠標位置的屏幕座標。

也可以使一個輔助類:

public static MouseHelper 
{ 
    public static IsObjectClicked(MyObject obj, int X , int Y) 
    { 
    .... 
    } 
} 

I`d去與靜態輔助。

相關問題