2011-12-12 74 views
1

我對處理Android中的觸摸事件非常熟悉。然而,我現在已經硬編碼了一切。我的意思是很多像if (e.getX()<0.1*v.getX)比較,爲遊戲對象和hud。在遊戲中的Android上正確的觸摸輸入處理

現在我實際上正在尋找正確的處理觸摸事件。我也嘗試存儲X和Y值在onTouch,但是這也變得凌亂,尤其是當我也必須測試ACTION_DOWN或ACTION_MOVE等...

所以任何人都知道最好的'架構或爲此?

+0

不太清楚你在問什麼。你的意思是說你不想測試遊戲對象或HUD代碼中的屏幕座標嗎? –

+0

我不想在View類中處理所有事情。我不知道是否應該存儲多個x-y變量或完整的touchEvent對象。還是應該將它傳遞給某些東西,比如對象或者一些TouchHandler類?我正在尋找一種通用的,最有用的方式來處理輸入,也是爲了處理輸入。 – user717572

回答

2

你的遊戲可能在不同的線程上有一個主循環,因爲在Android中你應該停止事件線程。如果是這種情況,我會設置一個單獨的InputBuffer類來接收和存儲傳入的觸摸事件。當我這樣做時,InputBuffer對於SurfaceViewOnTouchListener

當有傳入事件時,InputBuffer只是複製它並返回。這使事件線程免費,並有助於防止ANR s。

然後在主循環中,需要了解用戶輸入的遊戲對象可以訪問InputBuffer,以便他們可以獲取有關存儲事件的信息。這將您的輸入處理代碼移出視圖並將其移動到更有意義的遊戲對象中。

根據遊戲的速度,您可能還需要放入一個塊,以便在遊戲對象更新時傳入事件不會更新存儲的副本。相反,存儲的副本在主循環更新後更新,這樣所有遊戲對象都在使用相同的事件。

+0

取而代之的是創建一個InputBuffer類,是不是讓視圖的類中的getter和setter變得容易? – user717572