【问题标题】:Javascript: Canvas Drawing (2 identical files with different results)Javascript:画布绘图(2 个相同的文件,结果不同)
【发布时间】:2017-03-23 15:05:15
【问题描述】:

所以,我现在正在浏览我的 JavaScript 书籍,其中有一个画布绘图的小例子。我从书中复制了代码,但画布仍然是白色的。

然后,我继续下载作者收集的书中所有脚本的集合,并使用他的代码,它出乎意料地工作。

对我来说,这两个代码看起来相同,唯一不同的是我使用 " " 表示字符串,而作者使用了 ' '。

这是我的代码:

function init() {
    let canvas = document.getElementById("canvas");
    canvas.addEventListener("mousemove", handleMouseMove, false);
    let context = canvas.getContext("2d");
    let started = false;

    function handleMouseMove(e) {
        let x, y;
        if (e.clientX || e.clientX == 0) {
            x = e.clientX;
            y = e.ClientY;
        }
        if (!started) {
            context.beginPath();
            context.moveTo(x, y);
            started = true;
        } else {
            context.lineTo(x, y);
            context.stroke();
        }
    }

}

document.addEventListener("DOMContentLoaded", init);

这是作者的代码:

function init() {
    let canvas = document.getElementById('canvas');
    canvas.addEventListener('mousemove', handleMouseMove, false);
    let context = canvas.getContext('2d');
    let started = false;
    function handleMouseMove(e) {
        let x, y;
        if (e.clientX
            || e.clientX == 0) {
            x = e.clientX;
            y = e.clientY;
        }
        if (!started) {
            context.beginPath();
            context.moveTo(x, y);
            started = true;
        } else {
            context.lineTo(x, y);
            context.stroke();
        }
    }

}

document.addEventListener('DOMContentLoaded', init);

【问题讨论】:

  • 它们不相同,例如你有y = e.ClientY;,应该是y = e.clientY;。 (小写 C)
  • 天哪,根本没看到。非常感谢。

标签: javascript html canvas


【解决方案1】:

handleMouseMove 函数有一点问题。你写

y = e.ClientY;

但是e.ClientY不存在,应该是:

y = e.clientY;

【讨论】:

    猜你喜欢
    • 2016-02-20
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多