2013-04-04 5 views
5

私はwebkitブラウザ用のチャートでタッチインタラクティビティ(パンとズーム)を追加するプラグインflot.touch.jsに取り組んでいます。 IE10でも動作させたいのですが、私のタッチポイント(私はスケールを計算するために必要です)の間のスペースを取得する方法がわかりません。 WebKitのブラウザでIE10のタッチポイント間のスペース

、我々はこれらの変数を使用してこれを行うことができます。

evt.originalEvent.touches[0].pageX 
evt.originalEvent.touches[0].pagey 
evt.originalEvent.touches[1].pageX 
evt.originalEvent.touches[1].pageY 

答えて

4

をIEのポインタイベントでは、別のイベントは、各タッチポイントのために解雇されています。他のブラウザでも実装されているiOSタッチイベントとは異なり、各「ポインタ」の状態は個別に追跡されます。複数のポインタベースの入力デバイスをグループ化するより一般的なイベントであると考えてください。

各イベントオブジェクトには、状態を追跡するために使用できるpointerIdプロパティが指定されています。複数のタッチを追跡するには、イベントハンドラの関数のスコープ外にあるオブジェクト内の他の変数とともに必要な他のデータと共にpointerIdを格納する必要があります。たとえば:

var pointers = {}; 
function pointerDown(evt) { 
    if (evt.preventManipulation) 
     evt.preventManipulation(); 

    pointers[evt.pointerId] = [evt.PageX, evt.PageY]; 

    for (var k in pointers) { 
     // loop over your other active pointers 
    } 
} 
function pointerUp(evt) { 
    delete pointers[evt.pointerId]; 
} 

さらに読書:

4

アンディ・Eなどが述べました。あなたの画面上にあるポインタの数を追跡し、それぞれのプロパティを格納します(あなたのケースでは、x座標とy座標、獲得されたフォームイベント)

ここでは、http://ie.microsoft.com/testdrive/Graphics/TouchEffects/の良い例があります。 F12ツールを使用してコードとスクリプトタグの下にすべてのコードを取得する:あなたは、コードのこの部分を見つけることができますがありhttp://ie.microsoft.com/testdrive/Graphics/TouchEffects/Demo.js

function addTouchPoint(e) { 
    if(touchCount == 0) { 
     document.addEventListener(moveevent, moveTouchPoint, false); 
    } 

    var pID = e.pointerId || 0; 
    if(!touchPoints[pID]) { 
     touchCount++; 
     touchPoints[pID] = {x : e.clientX, y : e.clientY}; 
    } 
} 

では、Windows 8にしている場合、それは

1

を役に立てば幸いプラットフォーム、IE10 MSGestureオブジェクトをサポートします。このオブジェクトは、ジェスチャーイベントのiOS版のように使用できます。オブジェクトを初期化するには、ターゲットオブジェクトを設定するだけでなく、MSPointerDownにMSPointerを追加する必要があります。例えば:ここから

var myGesture = new MSGesture(); 
var myElement = document.getElementById("MyCanvas"); 
myGesture.target = myElement; //sets target 
myElement.addEventListener("MSPointerDown", function (event){ 
    redGesture.addPointer(evt.pointerId); // adds pointer to the MSGesture object 
}, false); 

は、あなたがevent.scaleプロパティを処理するMSGestureChange機能のイベントリスナーを追加することができます。ターゲットが設定されていない場合、InvalidStateError例外が発生することに注意してください。

+0

+1、それは知っておくと便利です、ありがとう:-) –

関連する問題