2012-04-07 5 views
1

私はエアホッケーのアンドロイドゲームを開発しています。 マルチタッチの理解に問題があります。 私はACTION_DOWN、ACTION_POINTER_DOWNなどについて学びます。はマルチタッチポインタをaction_moveに指定しました

ですが、問題はACTION_MOVEです。 私は2人のプレイヤーのために2つのスプライトを作成します.1番目のスプライトは私の第1の指が行くところを移動しますが、私の第2のスプライトは私の第2の指が動く場所を移動しません。

私の質問は、どのように指がACTION_MOVEで動いているのかを特定したいのですか?インデックスが変更されているため、第一指が画面を終了する場合は、になりますどの領域を知ることができない

switch (action & MotionEvent.ACTION_MASK) { 
    case MotionEvent.ACTION_DOWN: { 
    break; 
} 
case MotionEvent.ACTION_POINTER_DOWN: { 
    break; 
} 
case MotionEvent.ACTION_UP: { 
    break; 
} 
case MotionEvent.ACTION_POINTER_UP: { 
    break; 
} 
case MotionEvent.ACTION_MOVE: { 
     if((int)event.getPointerId(index) == 0){  //i know this IF statement is wrong, what should i do? 
     player1.setX((int)event.getX()); //player1 & player2 is a sprite object 
     player1.setY((int)event.getY()); 
     } 
     if((int)event.getPointerId(index) == 1){ 
     player1.setX((int)event.getX()); 
     player1.setY((int)event.getY()); 
     } 
} 

}

答えて

0

を私はgetPointerId(インデックス)を使用しようとしましたが、私はそれを使用する方法を理解していないです最初に触れた。第1の指/タッチはポインタID = 0、第2の指紋= 1などを取得する。あなたができることは次のとおりです:

public boolean onTouchEvent(MotionEvent event) { 

    // If this does not work search for a way to get the screen width 
    WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE); 
    Display display = wm.getDefaultDisplay(); 

    int eventaction = event.getActionMasked(); 

    int num = event.getPointerCount(); 

    // For every touch 
    for (int a = 0; a < num; a++) { 

     int X = (int) event.getX(event.getPointerId(a)); 
     int Y = (int) event.getY(event.getPointerId(a)); 


     int allowed_touch_range = display.getWidth()/2; // Your screen width divided by 2 
     switch (eventaction) { 

     case MotionEvent.ACTION_MOVE: 

      // Left half of the screen 
      if (X < allowed_touch_range) { 
           /* Player1 Move */ 
      } 
      // Rigth half 
      if (X > allowed_touch_range) { 
           /* Player2 Move */ 
      } 

      break; 

     } 
    } 

    return true; 
} 
関連する問題