2011-04-21 56 views
1

我加入到我的處理程序所共享的功能區分,並且它看起來像這樣:如何單並雙擊

initMouseHandling:function(){ 
        var dragged = null, 
        _mouseP, 
        selected, 
        nearest = null, 
        show = true, 
        num_console = 0, 
        timeout, 
        clicks, 
        delay = 500; 


var handler = { 



single_double_click: function (element, clicked, double_click, timeout) { 

$(element).observe('click', function (event) { 
    ++clicks; 
    if (clicks === 1) { 
     var timeoutCallback = function (event) { 
      if (clicks === 1) { 
       clicked.call(this, event); 
      } else { 
       double_click.call(this, event); 
      } 
      clicks = 0; 
     }; 
     timeoutCallback.bind(this, event).delay(timeout/1000); 
    } 
}.bind(this)); 
return false; 
}, 

clicked:function(e){ 
... 
}, 
dragged:function(e){ 
... 
}, 
dropped:function(e){ 
... 
}, 
over_edge:function(e){ 
... 
}, 
over_node:function(e){ 
... 
}, 
double_click:function(e){ 
... 
}} 

canvas.mousemove(handler.over_node); 
canvas.mousemove(handler.over_edge); 
canvas.mousedown(handler.single_double_click); 
//canvas.mousedown(handler.clicked); 
//canvas.dblclick(handler.double_click); 
} 

它說:「遺漏的類型錯誤:對象的翻譯:有沒有方法「觀察'「,無論使用$(畫布)還是$(窗口),正如我在其他地方看到的那樣...

我不知道是否應該引入處理程序作爲參數或不是,爲什麼我不能使用」觀察「,如果對於像我這樣的情況,我應該打電話給我的處理程序:

clicked.call(this, event); 
double_click.call(this, event);   

有什麼建議嗎?

回答