2012-03-21 4 views
1

デスクトップ用のマウスイベントを受け入れるjquery html5キャンバススケッチアプリケーションを作成しました(ペンタブレットはマウスイベントを使用します)。私はまた、iPhone、ipad、andriodのデバイス上の指で携帯Web対応アプリとして描画を許可したいと思います。モバイルデバイスでは、自分自身でマウスクリックイベントがトリガーされるため、イベントの重複を防ぐために、ブラウザのタイプを検出し、すべてのマウスバインディングをタッチバインディングで置き換える必要がありますか?ここでタッチイベントとマウスイベントの間のダブルトリガーを防ぐ方法

は愚かな例です。

<!DOCTYPE html> 
    <html> 
    <head> 
     <script src="jquery.min.js"></script> 
    </head> 
    <body> 
    <canvas id="myCanvas" width="1600px" height="1600px" style="border:1px dashed gray;background-color:white;"> 
    </canvas> 

    <script> 

    function brushStart() { 
     $('#myCanvas').css('background-color','blue'); 
    } 
    function brushEnd() { 
     $('#myCanvas').css('background-color','red'); 
    } 
    function brushMove() { 
     $('#myCanvas').css('background-color','yellow'); 
    } 

    $('#myCanvas').bind('mousedown', brushStart); 
    $('#myCanvas').bind('mouseup', brushEnd); 
    $('#myCanvas').bind('mousemove', brushMove); 
    $('#myCanvas')[0].addEventListener('touchstart',brushStart,false); 
    $('#myCanvas')[0].addEventListener('touchend',brushEnd,false); 
    $('#myCanvas')[0].addEventListener('touchmove',brushMove,false); 

    </script> 

    </body> 
    </html> 

答えて

0

私はあなたが探しているものを行うには、次を使用しました:

$("#myCanvas").bind("touchstart mousedown", function (event) { 
    var e = event.originalEvent; 
    e.preventDefault(); 

    startX = (e.targetTouches != undefined) ? e.targetTouches[0].screenX : e.offsetX; 
    startY = (e.targetTouches != undefined) ? e.targetTouches[0].screenY : e.offsetY; 

}); 

ポイントのカップル - あなたがアクセスする必要がありますtargetTouchesを操作するには、jQueryのoriginalEventを使用します。また、確実にわかるように、offsetX/Yに必要なプロパティー・ペアをマウス・イベントに置き換えることができます。

関連する問題