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

时间:2013-08-09 06:17:30

标签: javascript html canvas drawing

情况是: 我有一个画布并在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;

}
};

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

1 个答案:

答案 0 :(得分:0)

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

查看代码以获得更多洞察力: http://jsfiddle.net/cryostat/grb8e/1/