単純なスクリプトを使用して、マウスでキャンバスに線を描画しています。ユーザーがキャンバスをクリックしてドラッグすると、その領域に描画する必要があります。線は描画されますが、マウスに追従しておらず、オフセットの問題ではないようです。ボタンを長く押すほど、線はカーソルから離れます。要求よりも多くの線を引きますが、その理由がわかりません。たとえば、キャンバスの中央から開始して下に向かって移動すると、線はカーソルよりずっと前に下に到達します。私が使用しているコードは次のとおりです。
if(window.addEventListener) {
window.addEventListener('load', function () {
function init () {
front_canvas = document.getElementById('front_paint_canvas');
front_context = front_canvas.getContext('2d');
tool = new tool_pencil();
front_canvas.addEventListener('mousedown', ev_canvas, false);
front_canvas.addEventListener('mousemove', ev_canvas, false);
front_canvas.addEventListener('mouseup', ev_canvas, false);
}
function tool_pencil () {
var tool = this;
this.started = false;
this.mousedown = function (ev) {
context.beginPath();
context.moveTo(ev.clientX - 230, ev.clientY - 280);
tool.started = true;
};
this.mousemove = function (ev) {
if (tool.started) {
context.lineTo(ev.clientX - 230, ev.clientY - 280);
context.stroke();
}
};
this.mouseup = function (ev) {
if (tool.started) {
tool.mousemove(ev);
tool.started = false;
}
};
}
function ev_canvas (ev) {
context = ev.target.getContext('2d');
var func = tool[ev.type];
if (func) {
func(ev);
}
}
init();
}, false); }
どうしてこれが起こっているのでしょうか?