0
我正在拉斐爾畫線。我有一個mousedown事件,我存儲起始位置。當鼠標關閉時,如果用戶移動它,我會有一個鼠標移動事件,在鼠標移動的過程中我會一直畫線。Raphael:如何解除mouseup上的mousemove功能?
現在,當釋放鼠標按鈕時,該行應停止。即使按鈕被釋放,如果鼠標移動,這種情況也不會發生,並且線條一直在繼續。這條線必須停止在mouseup上。如果用戶再次使用它,它應該開始一個新行。
我已經嘗試了許多與unmouse *事件的組合,但我在這裏失去了一些東西。
的jsfiddle在:http://jsfiddle.net/zaphod013/P33FA/5/
(這是我的第一次約會JS /拉斐爾所以,如果你覺得我完全偏離了軌道在這裏,請告訴我的話)
var g_masterPaper;
var g_startX;
var g_startY;
var g_line;
function initDrawing() {
g_masterPaper = Raphael(10,10,700,500);
var masterBackground = g_masterPaper.rect(10,10,600,400);
masterBackground.attr("fill", "#eee");
var drawit = function(event) {
x = event.pageX - 10;
y = event.pageY - 10;
var linepath = ("M"+g_startX+" "+g_startY+" L"+x+" "+y);
g_line.attr("path", linepath);
};
var startit = function (event) {
g_startX = event.pageX - 10;
g_startY = event.pageY - 10;
g_line = g_masterPaper.path("M"+g_startX+" "+g_startY+" L"+g_startX+" "+g_startY);
masterBackground.mousemove(drawit);
};
masterBackground.mousedown(startit);
masterBackground.mouseup(function (event) {
this.unmousedown(startit);
this.unmousemove(drawit);
});
return g_masterPaper;
}
window.onload = function() {
var paper=initDrawing();
paper.text(15,475,'Use your mouse to draw.').attr({fill:'#ff0000', 'font-size':24, 'stroke-width':1,'text-anchor':'start' });
}
我還認爲我在處理程序中缺少某些東西。只有在鼠標按鈕關閉的情況下,才能使用mousemove繪製線條。一旦我釋放按鈕,該線應停止繪製。然後,如果我再次按下鼠標按鈕,應繪製一條新線。現在,不管鼠標按鈕是向上還是向下,線條都會被繪製。 – zaphod
道歉,我認爲有一個錯誤,它在Chrome中起作用,但mouseup在FFX中不起作用。我認爲最近發生的事情是mouseup無法正常工作,因爲它繪製了一條捕獲mouseup事件的線(作爲它的rect)。你可以使用jquery來附加像http://jsfiddle.net/P33FA/7/這樣的處理程序來解決這個問題可能是最簡單的方法。你可能只需要調整光標偏移量,因爲我在一個div中彈出它並添加處理程序。 – Ian
作品!謝謝。我看到你將函數綁定到div事件而不是元素事件。你能解釋一下你的意思嗎?「mouseup將無法正常工作,因爲它的繪圖線捕獲mouseup事件(作爲它的rect)」? – zaphod