2012-11-17 42 views
11

Tôi đang sử dụng JavaScript này trên cơ thể onmousemove chức năng:clearRect chức năng không rõ ràng vải

function lineDraw() { 
    //Get the context and the canvas: 
    var canvas=document.getElementById("myCanvas"); 
    var context=canvas.getContext("2d"); 
    //Clear the last canvas 
    context.clearRect(0, 0, canvas.width,canvas.height); 
    //Draw the line: 
    context.moveTo(0,0); 
    context.lineTo(event.clientX,event.clientY); 
    context.stroke(); 

} 

Đó là nghĩa vụ để xóa các vải mỗi khi tôi di chuyển con chuột xung quanh, và vẽ một đường mới, nhưng nó không hoạt động đúng. Tôi đang cố gắng giải quyết nó mà không cần sử dụng jQuery, trình nghe chuột hoặc tương tự.

Đây là mã:

http://jsfiddle.net/7vx2z/

Trả lời

22

Bạn nên sử dụng "beginPath()". Đó là nó.

function lineDraw() { 
    var canvas=document.getElementById("myCanvas"); 
    var context=canvas.getContext("2d"); 
    context.clearRect(0, 0, context.width,context.height); 
    context.beginPath();//ADD THIS LINE!<<<<<<<<<<<<< 
    context.moveTo(0,0); 
    context.lineTo(event.clientX,event.clientY); 
    context.stroke(); 
} 
+0

Đánh dấu câu trả lời này là được chấp nhận cho đúng đắn. –

+0

Muốn thêm rằng điều này đi cho các phương pháp vẽ như rect và arc là tốt. – MetalGodwin

+1

Đó là cũ nhưng ... 'closePath' là vô dụng và gây hiểu nhầm ở đây, nó chỉ là một' lineTo (previousStartingPointOfThePath) 'vì vậy cho một dòng duy nhất, nó sẽ không làm bất cứ điều gì, và nó không nói ở tất cả những gì bạn đã hoàn thành của bạn khai báo đường dẫn. – Kaiido

-1

Hãy thử với context.canvas.width = context.canvas.width:

function lineDraw() { 
    var canvas=document.getElementById("myCanvas"); 
    var context=canvas.getContext("2d"); 
    //context.clearRect(0, 0, context.width,context.height); 
    context.canvas.width = context.canvas.width; 
    context.moveTo(0,0); 
    context.lineTo(event.clientX,event.clientY); 
    context.stroke(); 
} 

Demo HERE

+0

hoặc đơn giản là 'myCanvas.width = myCanvas.width;'. –