2012-01-11 21 views
0

人がキャンバスをクリックしたときや、クリックして何かをドラッグしたときに、別のアクションを実装した瞬間です。私はmousedownイベントをキャンバスにバインドすることでこれを行いました。その機能では、ドラッグまたはマウスアップの違いが生じました。これは非常にうまくいきますが、要素のdoubleclickingもサポートしたいときに問題があります。クリックした状態でマウスの動きを検出してダブルクリックを検出

これを実装するための通常の方法は、このようなものです:

$(canvas).click(function1); 
$(canvas).dblclick(function2); 

が、私は(すなわちドラッグ)マウスが移動したか否かをチェックしなければならなかったので、私はそのように実装されていませんでした。 「私は別のクリックをリッスンするために一定の期間を待ちドロップ機能を実装することで(ドラッグアンドdoublclickの認識を)これら二つを組み合わせることを試みた

var handler = { 
    clicked:function(e){ 
     ... 
     $(canvas).bind('mousemove', handler.dragged); 
     $(window).bind('mouseup', handler.dropped); 
    }, 
    dragged:function(e){ 
     ... 
    }, 
    dropped:function(e){ 
     function loop(ctr){ 
     if (ctr < 50) { 
      setTimeout(function(){loop(ctr+1)}, 2); 
      } else { 
      $(canvas).mousedown(handler.clicked); 
      handler.singleClick(e); 
      } 
     } 
     $(canvas).mousedown(handler.doubleclicked); 
     loop(0); 
    }, 
    doubleClick: function(e){ 
     ... 
    }, 
    singleClick: function(e){ 
     ... 

     }     
    } 

$(canvas).mousedown(handler.clicked); 

、それがなかったの場合:これは私の現在の実装でありますその期間内に発生すると、singleclick関数に移動します。現時点ではまだ2度目のクリックを認識していません。

私はこれを行うより良い方法が存在すると仮定します。事前

答えて

1

で ありがとうございます。この時に見たいと思うかもしれません:
http://threedubmedia.com/code/event/drag

それは.click().dblclick()に加えて、追加機能.drag()を提供します。また

Theresのドロップバージョン:
http://threedubmedia.com/code/event/drop

+0

あなたは、このプラグインでの経験を持っていますか?私のコードでこのコードを使用したいときは、プラグインのこのコードからエラーが発生します:// //テキスト選択属性をON(真)またはOFF(偽)に切り替えます \t textselect:function(bool){ \t \t $(document)[bool? "アンバインド": "バインド"]( "selectstart"、drag.dontstart) \t \t \t .ATTR(ブール値、 "選択不可" "オフ":? "オン") \t \t \tの.css( "MozUserSelect"、BOOL ? "" : "なし" ); \t} ' と私は例のように呼んでいます:[http://threedubmedia.com/demo/drag/] ' $(div).bind( 'drag'、function(event){alert( "test ");});' – Consec

関連する問題