情况是:我有一个画布,在鼠标向下画东西,我有一个生成按钮,可以生成新的画布‘,你可以用同样的方式画东西。但问题是,当您单击前面的画布时,它开始绘制新画布。它不能画新的画布--函数必须停在那里。以下是绘图功能:
canvas.onmousedown = function(e) {
if (!painting) {
painting = true;
} else {
painting = false;
}
lastX = e.pageX - this.offsetLeft;
lastY = e.pageY - this.offsetTop;
};
canvas.onmousemove = function(e) {
if (painting) {
mouseX = e.pageX - this.offsetLeft;
mouseY = e.pageY - this.offsetTop;
// find all points between
var x1 = mouseX,
x2 = lastX,
y1 = mouseY,
y2 = lastY;
var steep = (Math.abs(y2 - y1) > Math.abs(x2 - x1));
if (steep){
var x = x1;
x1 = y1;
y1 = x;
var y = y2;
y2 = x2;
x2 = y;
}
if (x1 > x2) {
var x = x1;
x1 = x2;
x2 = x;
var y = y1;
y1 = y2;
y2 = y;
}
var dx = x2 - x1,
dy = Math.abs(y2 - y1),
error = 0,
de = dy / dx,
yStep = -1,
y = y1;
if (y1 < y2) {
yStep = 1;
}
for (var x = x1; x < x2; x++) {
if (steep) {
ctx.fillRect(y, x, 1, 1);
} else {
ctx.fillRect(x, y, 1, 1);
}
error += de;
if (error >= 0.5) {
y += yStep;
error -= 1.0;
}
}
lastX = mouseX;
lastY = mouseY;
}
};这里是http://jsfiddle.net/regeme/eV6kW/3/问题的小提琴手,任何帮助都会很好。
发布于 2013-08-09 10:09:53
我在代码中添加了一个onmouseup,以使其只在鼠标按住时绘制,问题是手动创建的第一个画布及其回调造成的。使用这种方式可以清除当前正在处理的画布。
查看代码以获得更多洞察力:http://jsfiddle.net/cryostat/grb8e/1/
https://stackoverflow.com/questions/18141049
复制相似问题