我正在开发游戏,我需要能够检测到一个手指正在执行MOVE,而另一只手指可能会触摸屏幕的另一部分。
使用以下代码,我可以同时检测到ACTION_MOVE(在屏幕的特定区域)和ACTION_DOWN
public boolean onTouch(View v, MotionEvent event) {
final int dest_x = (int) event.getX();
final int dest_y = (int) event.getY();
onTrackPad = dbSettings.TRACK_PAD.contains(dest_x, dest_y);
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
if (onTrackPad)
{
//move character
}
break;
case MotionEvent.ACTION_DOWN:
// Fire bullets
break;
}
//The event was consumed
return true;
}
问题是我不能同时移动和射击(我需要停止移动才能射击,反之亦然)
我知道Android可以处理多点触控事件,但是还没有弄清楚如何使用它来同时处理这些事件,从而使播放器可以同时移动和射击
我也尝试使用getActionMasked
没有运气的
阅读此问题后,Android MotionEvent.getActionIndex()和MultiTouch
这就是我解决问题的方式
public boolean onTouch(View v, MotionEvent event) {
int dest_x ;
int dest_y ;
p = event.getActionIndex() ;
dest_x = (int) event.getX(p);
dest_y = (int) event.getY(p);
onTrackPad = dbSettings.TRACK_PAD.contains(dest_x, dest_y);
action = event.getActionMasked() ;
switch (action) {
case MotionEvent.ACTION_MOVE:
if (onTrackPad)
{
//move character
}
break;
case MotionEvent.ACTION_DOWN:
// Fire bullets
break;
}
//The event was consumed
return true;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句