3

こんにちは、分割画面ゲームを作成していますが、コントロールを下げる方法がわかりません。現在、1 人だけが画面に触れている場合は問題なく動作しますが、複数の場合は、最初に触れた人だけが制御できます。だから私はマルチタッチを実装する必要があります。私はそれを行う方法を理解できないので、画面の上半分のオブジェクトを制御する1本の指を下ろしたら、画面の下半分を制御する別の指を置くことができます。どうすればいいですか?

編集:私はそれを変更しましたが、それでも機能しませんが、誰かが理由を教えてくれますか

うまくいかない私の試み:

  public boolean onTouch(View v, MotionEvent event){
      //needs multitouch
      if(checkInGame()){

                if(event.getY() < this.getMeasuredHeight() / 2){  
                    pointerId1 = event.getPointerId(event.getActionIndex());
                }else{
                    pointerId2 = event.getPointerId(event.getActionIndex());    
                }

                switch(event.getAction() & MotionEvent.ACTION_MASK){

                    case MotionEvent.ACTION_MOVE:{

                        if(event.getPointerId(event.getActionIndex()) == pointerId1){  
                            Log.d("Touch","Move1");
                              int pointerIndex = event.getActionIndex();
                          int moveX = 0;
                          int moveY = 0;
                          moveX = (int) event.getX(pointerIndex) - sX;
                          moveY = (int) event.getY(pointerIndex) - sY;

                          ship1.setLoc(moveX, moveY);
                          sX = sX + moveX;
                          sY = sY + moveY;
                        }else if(event.getPointerId(event.getActionIndex()) == pointerId2){
                              int pointerIndex = event.getActionIndex();
                            Log.d("Touch","Move2");
                              int moveX = 0;
                              int moveY = 0;
                              moveX = (int) event.getX(pointerIndex) - sX2;
                              moveY = (int) event.getY(pointerIndex) - sY2;

                              ship2.setLoc(moveX, moveY);
                              sX2 = sX2 + moveX;
                              sY2 = sY2 + moveY;
                        }
                          return true;


                    }
                      case MotionEvent.ACTION_DOWN: {

                            if(event.getPointerId(event.getActionIndex()) == pointerId1){
                                Log.d("Touch","Top1");
                                int pointerIndex = event.getActionIndex();
                                sX = (int) event.getX(pointerIndex);
                                sY = (int) event.getY(pointerIndex);
                            }else if(event.getPointerId(event.getActionIndex()) == pointerId2){
                                int pointerIndex = event.getActionIndex();
                                Log.d("Touch","Bottom1");
                                 sX2 = (int) event.getX(pointerIndex);
                                 sY2 = (int) event.getY(pointerIndex);
                            }
                            return true;
                        }

                      case MotionEvent.ACTION_POINTER_DOWN:{
                            if(event.getPointerId(event.getActionIndex()) == pointerId1){
                                Log.d("Touch","Top2");
                                int pointerIndex = event.getActionIndex();
                                sX = (int) event.getX(pointerIndex);
                                sY = (int) event.getY(pointerIndex);
                            }else if(event.getPointerId(event.getActionIndex()) == pointerId2){
                                int pointerIndex = event.getActionIndex();
                                Log.d("Touch","Bottom2");
                                 sX2 = (int) event.getX(pointerIndex);
                                 sY2 = (int) event.getY(pointerIndex);
                            }
                            return true;
                      }


                }
4

1 に答える 1

3

おそらく、各ポインターをその ID で追跡する必要があります。ポインターを下げて ID を確認し、ID 1 のポインターがオブジェクト 1 を制御していることを確認します。次の Android ブログ投稿を読んでください。 Making-sense-of-multitouch.html

于 2012-05-11T00:11:38.070 に答える