2016-02-14 9 views
5

新しいハンマーピンチイベントを作成し、オプション内のポインタの数について言及していないときは最大3本の指しか検出しない私はポインタを例に挙げるHammer.js:任意の数の/複数の指でピンチを検出する方法

var multiPinch = new Hammer.Pinch({event: 'multipinch', pointers: 4, threshold: 0}); 

の場合、4本の指でピンチを検出するだけです。私はドキュメントやあらゆる場所で検索しようとしましたが、1つのイベントで2,3、または10本の指でピンチを検出できませんでした。私のウェブアプリケーションが画面サイズ81インチで動作する必要があるので、これが必要です。

答えて

4

まあ私はそれを最終的に解決しました!私はそれがハックだが、それが動作するかどうかわからない! 解決策は結構簡単で、ポインターオプションを0に設定しました。今

var multiPinch = new Hammer.Pinch({event: 'multipinch', pointers: 0, threshold: 0}); 

、この「multipinch」イベントは、これは、ここでのドキュメントからインスパイアされた2〜10

までのポインタの任意の数のピンチを検出:http://hammerjs.github.io/recognizer-pinch/ ポインタオプションのために言う:

| Option | Default | Description        | 
|:--------:|---------|-----------------------------------------| 
| pointers | 1  | Required pointers. 0 for all pointers. | 

私はピンチイベントのためにポインタオプションを0に設定しようとしましたが、うまくいきました!

1

PinchRecognizerは指定したポインタ数を正確にチェックします(これは実際にスーパークラスAttrRecognizerでチェックされています)。ポインタのパラメータを指定しないと3つのポインタが検出されます。

とにかく、2つの解決方法があります。ひとつは自分のピンチレコグナイザを書くことです。hammer.jsのソースコードを見て、あなたが探しているのは、ポインタの数をチェックするsuperメソッドを呼び出さないで、ポインタの数がそれ以下であることを確認するだけですあなたが望むものに。

もっと簡単な解決策は、必要なポインターの数ごとにPinchRecognizerを定義することです。したがって、4本以下の指を検出したい場合は、次のようにしてください:

var mc = new Hammer.Manager(element); 

mc.add(new Hammer.Pinch({ event: 'pinch2', pointers: 2, threshold: 0 })); 
mc.add(new Hammer.Pinch({ event: 'pinch3', pointers: 3, threshold: 0 })); 
mc.add(new Hammer.Pinch({ event: 'pinch4', pointers: 4, threshold: 0 })); 

免責事項:これはテストしていません。すべての認識装置をリンクするには、recognizeWithに電話する必要があります。

+0

あなたの答えをありがとう。私はついにそれを別の方法で解決しました。私の答えをチェックしてください! – Parth

+0

2つ目の解決策はあまりにも扱いにくいようです。 2から10までのポインタを使用し、それらを処理します。幸運にも、ポインタ:0がなければピンチレコグナイザを修正する必要がありました。ところで、3つのポインタが検出されているのが実際には驚くべきことです。 – Parth

関連する問題