如何在ACTION_MOVE处理过程中用另一根手指检测TOUCH事件

Mau*_*rez 8 android event-handling

我正在开发一个游戏,我需要能够检测到一个手指正在执行移动,而另一个手指可以触摸屏幕的另一部分.

使用以下代码,我能够检测到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;
}
Run Code Online (Sandbox Code Playgroud)

问题是我无法同时移动和射击(我需要停止移动以便开火和反之)

我知道Android可以处理多点触控事件但是没有想到如何使用它来处理这些事件并同时处理玩家可以同时移动和触发

我也尝试使用getActionMasked没有任何运气

Mau*_*rez 2

读完这个问题后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;
}
Run Code Online (Sandbox Code Playgroud)