我已经搜索了试图为此找到答案的互联网,但我读过的所有教程似乎都显着地使我的小问题复杂化了。基本上,如果您在屏幕左侧上下拖动手指,我会在屏幕左侧有一个上下移动的船,如果您触摸屏幕右侧的任何位置,则会发射导弹。
public boolean onTouchEvent(MotionEvent event)
{
if (event.getX() < getWidth()/2)
{
if (shipY < event.getY())
shipY = shipY + 10;
if(shipY > event.getY())
shipY = shipY - 10;
}
if (event.getX() >= getWidth()/2)
{
if(!missile)
{
missile = true;
missileY = shipY;
missileX = shipX;
}
}
return true;
}
现在,如果我停止移动船只,我只能发射导弹。非常感谢!
答案 0 :(得分:0)
昨天我对这个问题做出了解释:Touch more one button at once
TL; DR - 您无法同时触摸两个视图。如果要在多个View对象上完成并发触摸,则需要将它们组合到自定义ViewGroup中并自行调度触摸事件。
答案 1 :(得分:0)
如果您的船只和导弹碰巧在同一个视图中,那么您可以将onTouchListener添加到该视图中,该视图将处理多次触摸。 (它将是您自己的类,它实现了View.onTouchListener)
这是你需要在onTouchListener中覆盖的方法的骨架:
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
//first finger went down
break;
case MotionEvent.ACTION_MOVE:
//a touch placement has changed
break;
case MotionEvent.ACTION_UP:
//first finger went up
break;
case MotionEvent.ACTION_CANCEL:
//gesture aborted (I think this means the finger was dragged outside of the touchscreen)
break;
case MotionEvent.ACTION_POINTER_DOWN:
//second finger (or third, or more) went down.
break;
case MotionEvent.ACTION_POINTER_UP:
//second finger (or more) went up.
break;
default: break;
}
return true;
}
您可以在http://developer.android.com/reference/android/view/MotionEvent.html获取有关这些案例(以及您可能想要使用的其他案例)的更多详细信息。
关于你如何处理你的逻辑 - 在理智的情况下,你的ACTION_DOWN或“第一根手指”可能对应于接触船只的玩家,以及他们想要射击导弹的ACTION_POINTER_DOWN。但请记住处理玩家可能首先触摸屏幕的“导弹侧”,然后触摸船只然后移动它的情况。