首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在特定条件下禁用javascript函数

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

Stack Overflow用户
提问于 2013-08-09 06:17:29
回答 1查看 212关注 0票数 0

情况是:我有一个画布,在鼠标向下画东西,我有一个生成按钮,可以生成新的画布‘,你可以用同样的方式画东西。但问题是,当您单击前面的画布时,它开始绘制新画布。它不能画新的画布--函数必须停在那里。以下是绘图功能:

代码语言:javascript
复制
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/问题的小提琴手,任何帮助都会很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-09 10:09:53

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18141049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档