2011-04-03 62 views
0

我想將兩個事件綁定在一起。將兩個動作綁定到同一事件

現在我的設置是將所需的所有鼠標操作綁定到畫布上,然後調用使鼠標相對於畫布位置的包裝函數。包裝函數然後在內部函數中調用正確的操作。我也想結合touchstarttouchmovetouchend

這裏是我有什麼

$('canvas').bind('mousedown mousemove mouseup', ev_canvas); 
function ev_canvas (e) { 
    var pos = findPos(this); 
    e._x = e.pageX - pos.x; 
    e._y = e.pageY - pos.y; 

    var func = tool[e.type]; 
    if (func) { 
     func(e); 
    } 
} 

tools.pen = function() { 
    tool.mousedown = function (e) { 
     //Stuff to do 
    }; 

    tool.mousemove = function (e) { 
     //Stuff to do 
    }; 

    tool.mouseup = function (e) { 
     //Stuff to do 
    }; 
} 

這就需要正確的工具,然後調用鼠標(|下一頁|移動)爲例構造函數依賴在行動。

有沒有辦法將觸摸動作綁定到那些可以調用其中一個或另一個的方法,並將其複製並粘貼一堆代碼?

回答

4

我會創建一個映射表 - eventName:callbackName。這裏是一個樣本

var functionMappings = { 
    mousemove: "mousemove", 
    touchmove: "mousemove", 
    mousedown: "mousedown", 
    touchstart: "mousedown", 
    mouseup: "mouseup", 
    touchend: "mouseup" 
}; 

var func = tool[functionMappings[e.type]]; 

if (func) { 
    func(e); 
} 
+0

優雅的解決方案。 – karim79 2011-04-03 07:01:59

+0

我非常感謝! – austinbv 2011-04-03 07:05:40

相關問題