我的問題與您的問題完全相同。 我的解決方案有點不同。我正在嘗試編寫一個backammon遊戲。我有30個物體放置在屏幕上並移動它們。當然,其中一些重疊。所以我的問題是我觸摸了一個物體,最後移動了另一個物體(從我認爲這是一個物體放置在屏幕上後,我觸摸的那個和我觸摸的那個物體的左側)。
不管怎樣,我所做的就是創建一個擴展視圖中的自定義對象並將其放在GestureOverlayView。我覆蓋的onTouchEvent(),它看起來是這樣的:
public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getRawX();
int y = (int) event.getRawY();
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
if (Math.abs(x - this.getX()) < BackgroundView.slotSize && Math.abs(y - this.getY()) < BackgroundView.slotSize) {
//do whatever I want
return true;
} else {
return false;
}
//break;
case MotionEvent.ACTION_MOVE:
//this is the dragging part
this.setX(x - size/2);
this.setY(y - size/2);
break;
case MotionEvent.ACTION_
break;
case MotionEvent.ACTION_CANCEL:
break;
case MotionEvent.ACTION_OUTSIDE:
break;
default:
}
return true;
}
從我讀,當我返回false,動作不消耗,所以另一個對象可以做到這一點。基本上,沒有任何對象會消耗它,直到通過返回true來消除它。
我仍然認爲我是一個新手,我覺得有更好的方法可以做到這一點,但它的工作原理很適合我。希望能幫助到你。你或別人。 我接受新的建議。
人力資源管理模式,似乎低效的遍歷所有的「可觸摸」的對象來檢查衝突(或任何事件)...但它似乎是在Android的世界所做的那樣的。 – Overunity 2012-02-13 05:54:26
環顧四周後,似乎是這樣做的。如果不需要準確的精度,我強烈建議使用Android的Rect類進行檢測。 – YumeApps 2012-02-13 06:37:01