0

onTouchメソッドの複数のポインターに問題があります。すべてのポインタはブール値に関連付けられています。ダウンの場合はtrue、アップの場合はfalseです。1つのポインターがtrueからfalseに変更されても、他のブール値に影響を与えないことが非常に重要です。

私が抱えている問題は、たとえば、ポインター1と2がダウンしていて、ポインター2が上がっている(falseに変わる)場合、ポインター1もその反復でfalseに変更されることです。これは、ポインタ数が変わるとポインタIDが変わるためです。

私が抱えている問題を解決する方法について何か提案はありますか?

これはコードです:

public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    int action = (event.getAction() & MotionEvent.ACTION_MASK);
    int pointCount = event.getPointerCount();

    for (int i = 0; i < pointCount; i++) {
        int id = event.getPointerId(i);


        if (id < MAX_NUMBER_OF_POINT) {
            Log.d(TAG, String.valueOf(id));
            xA[id] = (int) event.getX(i);
            yA[id] = (int) event.getY(i);

            if ((action == MotionEvent.ACTION_DOWN)
                    || (action == MotionEvent.ACTION_POINTER_DOWN)
                    || (action == MotionEvent.ACTION_MOVE)) {
                touching[id] = true;
            } else {
                Log.e(TAG, "i: " + String.valueOf(i));
                Log.e(TAG, "id: " + String.valueOf(id));
                touching[id] = false;
            }
        }
    }


    for (int i2 = 0; i2 < 5; i2++) {
        if (touching[i2] == false) {
            // Log.d(TAG, "Was Here" + String.valueOf(i2));
            xA[i2] = 0;
            yA[i2] = 0;
        }
    }

    x1 = xA[0];
    x2 = xA[1];
    x3 = xA[2];
    x4 = xA[3];

    y1 = yA[0];
    y2 = yA[1];
    y3 = yA[2];
    y4 = yA[3];

return true;
}

ありがとう!

4

1 に答える 1

0

何かにIDを付けるポイントは、それを参照するための一貫した名前を持つことだと思います。ID がポインタ カウントによって変化する場合は、別の識別システムが必要になる可能性があります。ポインタ数とは無関係に参照/更新されるポインタ ID の配列を作成できます。

于 2012-08-10T23:01:04.067 に答える