2010-12-08 121 views
0

我有一個2D陣列在屏幕上顯示,並決定執行哪裏會檢測觸摸位置和在其中找到所述觸摸位於瓷磚和刪除它,r表示更精確的方法中,更改int在地圖[x] [y]處。 我現在有一個2D地圖陣列充分的三分球15 15。 觸摸的位置和這種方法,我創建,因爲我無法找到一個方法來本輪下跌的數字,將計算陣列中的位置,並更改值:Android的觸摸事件力關閉

public boolean onTouchEvent(MotionEvent event) { 

    mX = (int) event.getX(); 
    mY = (int) event.getY(); 
    calculate(); 
    return true; 
} 

public void calculate() { 

    indexX = 0; 
    indexY = 0; 
    for (int n = 32; n < mX; n += 32) { 
     indexX++; 
    } 
    for (int n = 32; n < mY; n += 32) { 
     indexY++; 
    } 
    map[indexY][indexX] = 1; 
} 

它會強制關閉,如果我開始搗碎屏幕或周圍拖動我的手指,但如果我觸摸一個位置一個一個慢慢的它工作正常。 我認爲計算的方法不應該在觸摸事件方法中,但仍然不太確定。

+1

請問您可以粘貼logcat嗎? – Cristian 2010-12-08 15:37:17

回答

0

這個循環沒有必要。除兩個整數應該給你一個整數結果。既然你想除以二的冪,你也可以使用算術移位算子。 (有人可能會認爲,編譯器會選擇哪個速度更快,無論你的代碼,但負值的舍入行爲是不同的)

indexX = MX >> 5;

速度不應該是一個問題,如果你只是做兩個操作反正。

通過「強制關閉」你的意思是一個應用程序沒有響應的對話框?

如果是別的東西,你可能有一個界限問題。

+0

嗯,這很奇怪。我提出的第一個解決方案是按照您的建議分解爲整數,但它不起作用。我想這是因爲我的手機插入了,並且模擬器正在運行或者其他類似的東西。我會再試一次,看看會發生什麼。 – semajhan 2010-12-08 16:04:18