Попробуй это:
Я уже немного поработал над этим, так что пришло время помочь вам. Главное в коде — отслеживать указатель мыши и захватывать его.
Вы должны рисовать только тогда, когда мышь опущена и движется. Для этого сделайте:
var drawing =false;//initially
После этого всякий раз, когда нажимается левая кнопка мыши, отслеживайте как:
canvas.on('mousedown',function(e){
e.preventDefault();
drawing = true;
prev.x = e.pageX;
prev.y = e.pageY;
});
Когда пользователь движется с нажатой левой кнопкой мыши, вы отслеживаете указатель мыши и соответственно рисуете. Он будет рисовать линию от самой последней точки до текущего указателя мыши, поэтому он позаботится о плавном рисовании, то есть о непрерывном пути.
doc.on('mousemove',function(e){
// Draw a line for the current user's movement
if(drawing){
drawLine(prev.x, prev.y, e.pageX, e.pageY);
prev.x = e.pageX;
prev.y = e.pageY;
}
});
//function drawing line with color and width set as variables, feel free to change
function drawLine(fromx, fromy, tox, toy){
ctx.beginPath();
ctx.lineWidth = globalBrushSize;
ctx.strokeStyle = globalBrushColor;
ctx.moveTo(fromx, fromy);
ctx.lineTo(tox, toy);
ctx.stroke();
}
Наконец, когда нажатая кнопка мыши отпущена, просто измените условие, обязательное для рисования линии.
doc.bind('mouseup mouseleave',function(){
drawing = false;
});
Код объясняется здесь, а для демонстрации посетите скрипку, о которой я упоминал ранее.
Удачного кодирования!
person
softvar
schedule
26.11.2013