如何在特定条件下禁用javascript函数

how to disable javascript function on a specific condition

本文关键字:javascript 函数 条件下      更新时间:2023-09-26

情况如下:我有一个画布,可以在mousedown上绘制东西,还有一个生成按钮,可以生成新的画布。但问题是,当你点击上一个画布时,它开始绘制新的画布。它不能绘制新的画布,函数必须停止在那里。这是绘图功能:

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;
}
};

这是这个问题的jsfiddlehttp://jsfiddle.net/regeme/eV6kW/3/任何帮助都会很棒。

我在代码中添加了一个onmouseup,使其仅在按住鼠标时绘制,问题是由于手动创建的第一个画布及其回调造成的。使用这种方式清除将清除当前正在处理的画布

查看代码以获得更多见解:http://jsfiddle.net/cryostat/grb8e/1/