-2

touchlistener に問題があり、実際には正しく動作しません。

    @Override
public boolean onTouchEvent(MotionEvent event) {

    touchControll.processTouchEvent(event); //should do everything!
    invalidate();
    return true; 
}

Methode の processTouchevent は、単純にイベント ウォッチを取得して処理します。したがって、タッチがジョイパッド内にある場合は、ジョイパッドの「アクション」を処理します。しかし、hitButton イベントを処理したい場合は、反応しません。

    public void processHitButtonTouch(MotionEvent event){
    int touchPosX = (int) event.getX();
    int touchPosY = (int) event.getY();
    if(event.getAction() == MotionEvent.ACTION_DOWN)
        if(touchPosX > Config.BLOCKSIZE*37 && touchPosY > Config.BLOCKSIZE*3 && touchPosY < Config.BLOCKSIZE*7){
            this.hitButton.buttonStatus = Pressed.PRESSED;
        }
    }

すべての MotionEvent.ACTION_UP で、次のようにすべてをリセットします。

    if(event.getAction() == MotionEvent.ACTION_UP){
        joyPad.status = Status.IDLE;
        charac.setStatus(Status.IDLE);
        this.hitButton.buttonStatus = Pressed.UNPRESSED;
    }

Loggincat で実際に複数のイベントを処理するかどうかを結びました (2 タッチ 2 回 downevent がログに記録されました!)。しかし、私がここでやったようには機能しません。私は何を間違えましたか?!

助けてくれてありがとう!

4

1 に答える 1

2

タッチ イベントは、Android では 1 つのビューでしかキャッチされないため、ジョイパッドに指を置いている間、hitButton が反応しないのは正常です。

マルチタッチを使用するには、すべてのボタン (ジョイパッド、ヒットボタンなど) を含むグローバル ビューを実装する必要があります。したがって、このビューはイベントをキャッチし、ジョイパッドの touchEventListener または hitButton のリスナーに渡します。

編集:2つのジョイスティックを使用した例

http://code.google.com/p/mobile-anarchy-widgets/source/browse/trunk/Widgets/src/com/MobileAnarchy/Android/Widgets/Joystick/DualJoystickView.java?r=30

Edit2 : 良いチュートリアル

http://android-developers.blogspot.fr/2010/06/make-sense-of-multitouch.html

于 2012-11-20T13:22:37.603 に答える