2

私はこの記事を見つけました: http://android-developers.blogspot.ca/2010/06/making-sense-of-multitouch.htmlは私の理解に役立ちましたが、私がやろうとしていることを行う方法がまだわかりません行う。

私のゲームでは、仮想アナログ スティックといくつかのボタンがあります。一度に登録できるのは 2 本の指だけです。これが私が欲しいものです。1 つはアナログ スティック用、もう 1 つはボタン用です。

私が確信していない主なことは、アナログスティックに指を置いて動かし、次にボタンに指を置いてからボタンを放すと、アナログスティックは最初の指まで動き続けるはずです.

逆に、ボタンが最初に触れてからアナログ スティックに触れた場合、アナログ スティックを離してもボタンは押し下げられたままになります。

タッチ ポインターは Android でこのように機能しますか。たとえば、指を下に置くと、他の指を上または下に置いても、最初の指を順番に覚えて下に移動し、上に移動してイベントを移動します。 ?

ありがとう

理想的には、次のような機能があればいいのにと思います。

void onTouch(int fingerID, int action, int x, int y)
{

}

置かれた各指がその指が上がると、down、move、up イベントを受け取ります。

このゲームはレーシング ゲームなので、ステアリングとガスのプッシュを同時に行う必要があります。

私の問題は 、action_move で特定されたこのマルチタッチ ポインターに似ています

編集:

私はこのコードを持っています:

private void onTouch(int finger, int action, float x, float y)
    {
        if(action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN)
        {
            createInput(finger, x, y);
        }
        else if(action == MotionEvent.ACTION_MOVE)
        {
            inputMove(finger, x, y);
        }
        else if(action == MotionEvent.ACTION_UP  || action == MotionEvent.ACTION_POINTER_UP)
        {
            destroyInput(finger, x, y);
        }
    }

    public void onTouch(MotionEvent ev)
     {
         final int pointerCount = ev.getPointerCount();
         for (int p = 0; p < pointerCount; p++) {
             onTouch(ev.getPointerId(p), ev.getAction(), ev.getX(p), ev.getY(p));
         }
     }

しかし、それは最初のものに対してのみ機能します。

4

2 に答える 2

1

したがって、MotionEvent クラスで右に示されている例から:

 public boolean onTouch(MotionEvent ev) {
     final int pointerCount = ev.getPointerCount();
     for (int p = 0; p < pointerCount; p++) {
         onTouch(ev.getPointerId(p), ev.getAction(), ev.getX(p), ev.getY(p));
     }
     return true;
 }
于 2012-10-16T16:30:41.177 に答える
0

ズーム用のAChartEngineでピンチが処理される方法を確認できます。80行目から始まるこのコードを参照してください。最初は複雑に見えるかもしれませんが、より多くのユースケースを処理するのに役立つ場合があります。

于 2012-10-16T17:28:33.627 に答える