2010-02-26 59 views
2

我正在編寫需要接收觸摸事件的Android遊戲。我的問題是,無論用戶何時沿屏幕拖動手指,觸發事件都會發送到touch事件處理程序(我認爲它是作爲一個單獨的線程運行),導致幀速率直線下降!我可以限制每秒處理的觸摸事件數量的最佳方式是什麼?例如,如果我的遊戲運行速度爲60 fps,那麼我實際上不需要每秒鐘處理超過1個觸摸事件。我能做到這一點嗎?不會丟失任何信息(即關於用戶最後觸摸屏幕上的哪個位置的重要信息)?過多的觸摸事件減慢Android應用程序

+0

[爲什麼觸摸事件會破壞我的Android幀速率?](http://stackoverflow.com/questions/792185/why-are-touch-events-destroying-my-android-framerate) – richq 2011-01-06 12:15:17

回答

3

我的猜測是,它不是觸摸事件,而是它們的處理。確保你只是處理你需要的事件類型(即下移或移動)而忽略其他事件。如果存儲時間不超過1秒,您也可能想要存儲時間並提前退出事件。

public boolean onTouchEvent(MotionEvent event) { 
    float x = event.getX(); 
    float y = event.getY(); 

    switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
0

請參閱處理事件this page。即使你不使用GLSurfaceView,它仍然可能適用。至少在具有圖形加速功能的手機上(不要在模擬器上測試它),我認爲你應該能夠每秒處理至少50個touchEvents,而不會降低幀率。

你不想做的是阻止渲染線程出於任何原因。