2

このコードは、指のスワイプジェスチャで正常に機能しています。つまり、指をスワイプすると、イベントが発生し、nextMonth() 関数が呼び出されます。2 つの異なるジェスチャで 2 つの異なるメソッドを呼び出すことができるように、上方向と下方向にスワイプしたかどうかを確認できる方法があります。

            var myGesture = new MSGesture();
            var v = this.element.querySelector(".bartouch");
            myGesture.target = v;
            v.addEventListener("MSGestureEnd", handleListner,false);
            v.addEventListener("MSPointerDown", handleListner, false);

        function handleListner(evt) {
            if (evt.type == "MSPointerDown")   
                {
                myGesture.addPointer(evt.pointerId);
                return;
            }
        that.nextMonth();
        }
4

2 に答える 2

1

2つの選択肢があります。

  1. MSGesture、を使用し、、、、およびイベントを処理してMSGestureStartMSGestureChangeMSGestureEndユーザーの指(または複数の指)の平行移動を計算し、それらが正しい方向にあるかどうかを確認します。によって返されるイベントオブジェクトには、ユーザーが指をどれだけ動かしたかを示すインクルードとプロパティがMSGestureChange含まれます。ここに詳細なサンプルがあります。translateXtranslateY

  2. ジェスチャオブジェクトのジェスチャ設定を使用Windows.UI.Input.GestureRecognizerして使用し、ジェスチャを具体的にX変換またはY変換に設定します。Ball Eightサンプルは、これを行う方法を示しています。これは主に、GestureRecognizerクラスを作成し、インタラクションを確認するDIVでDOMイベントを処理してイベントをフィードし、ハンドラーを介してそれらを(共有)レコグナイザーインスタンスに渡すことを含みます。MSPointer[Down|Move|Up|Cancel]process[Down|Move|Up]Event

個人的には、1ではなく2を使用することをお勧めします。セットアップはより困難ですが、ユーザーがジェスチャーを手で微調整するのではなく、スワイプやフリックなどのジェスチャーを一貫して体験できるようになります。方法1を選択した場合。

于 2012-09-20T16:25:03.993 に答える
0

ゲームの 1 つでHammerJSを使用して、さまざまな方向のジェスチャを処理することに成功しました。

これは、4 つの方向すべてを処理するために必要なすべてのコードです。

var hammerOptions = { swipeVelocityX: 0.1, swipeVelocityY: 0.1 };
Hammer(contentContainer, hammerOptions).on("swipeleft", function(event) { moveBlocksLeft(); });
Hammer(contentContainer, hammerOptions).on("swiperight", function(event) { moveBlocksRight(); });
Hammer(contentContainer, hammerOptions).on("swipeup", function(event) { moveBlocksUp(); });
Hammer(contentContainer, hammerOptions).on("swipedown", function(event) { moveBlocksDown(); });

contentContainerコンテンツを含む div はどこにあり、各方向にはジェスチャをさらに処理する機能があります。

于 2014-06-23T14:10:23.563 に答える