Я пытаюсь создать приложение простого рисования с Paper.js. Я могу рисовать с помощью мыши, но у меня есть разрыв между курсором и линией, нарисованной на холсте.Paper.js, пробел между курсором и холстом
Я понял, что меню навигации сверху веб-страницы нажимает курсор (100 пикселей). Я предполагаю, что координаты мыши берутся из левого верхнего угла (0-0) окна и используются одни и те же координаты на холсте, который измерял эти точки из своего верхнего левого угла (см. скриншот). Я попытался установить положение холста в абсолютное, что помогает получить его в верхнем левом углу, но мне нужно его в центре окна.
Как я могу это исправить?
Спасибо!
сценарий:
...
var doc = $(document),
win = $(window),
canvas = $('#paper'),
ctx = canvas[0].getContext('2d')
doc.on('mousemove',function(e){
if($.now() - lastEmit > 30){
socket.emit('mousemove',{
'x': e.pageX,
'y': e.pageY,
'drawing': drawing,
'id': id
});
lastEmit = $.now();
}
// Draw a line for the current user's movement, as it is
// not received in the socket.on('moving') event above
// (because he only broadcats (not receiving))
if(drawing){
drawLine(prev.x, prev.y, e.pageX, e.pageY);
prev.x = e.pageX;
prev.y = e.pageY;
}
});
function drawLine(fromx, fromy, tox, toy){
console.log(fromy + ' ' + toy);
ctx.moveTo(fromx, fromy);
ctx.lineTo(tox, toy);
ctx.stroke();
}
Ваш скрипт использует чистый JavaScript код/DOM; Я не вижу никакого использования бумаги. Я подозреваю, что проблема заключается в том, какую (x, y) позицию вы используете из события. Если холст и весь документ не совпадают, то pageX и pageY будут смещены. Вам нужно перевести координаты в координаты холста. – bmacnaughton