我有一個遊戲,它顯示一組彩色塊。用戶可以在屏幕上移動這些塊。當發生觸摸事件時,我會注意到已觸摸的單元格(cell[i][j].isMoving = true
)。如果用戶移動塊,我畫相對於偏移值的矩形。當檢測到觸摸事件時,我檢查用戶是否將塊拖動得足夠遠以表示移動塊。android updateThread draw()方法和touchEvent干擾
我的基本平局循環如下:
for(int i = 0; i < xCells, i++){
for(int j = 0; j < yCells; j++){
if(cell[i][j].isMoving)
canvas.drawRect(...) // draw with offsets
else
canvas.drawRect(..)
}
}
當用戶釋放偶爾閃爍簡要塊我遇到的問題是。
當觸摸事件發生時,必須將偏移設置爲0,塊的座標已更改(如果滿足要求)並且isMoving
必須設置爲false
。 因爲我有一個不斷運行的線程調用上面的繪圖代碼,看起來UI線程正在改變塊的數組,這意味着當繪圖方法發生時它處於不一致的狀態。
有沒有人有如何解決這個問題的建議?我可以使用處理程序嗎?我已經試過同步onTouchEvent
方法和onDraw
方法,但這似乎阻擋偶爾用戶輸入
感謝
謝謝Lumis,我喜歡你的解決方案。我會放棄它 – 2012-02-07 00:27:48