Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何清理画布?_Javascript_Dom_Canvas - Fatal编程技术网

Javascript 如何清理画布?

Javascript 如何清理画布?,javascript,dom,canvas,Javascript,Dom,Canvas,出于某种原因,我做这件事是行不通的 canvas.width = canvas.width; 这是我的密码: function startDraw(){ document.getElementById('PaintArea').setAttribute('onmousemove', 'getMouse(event)'); } function stopDraw(){ document.getElementById('PaintArea').setAttribute('onmousemove',

出于某种原因,我做这件事是行不通的

canvas.width = canvas.width;
这是我的密码:

function startDraw(){
document.getElementById('PaintArea').setAttribute('onmousemove', 'getMouse(event)');
}
function stopDraw(){
document.getElementById('PaintArea').setAttribute('onmousemove', '');
}
function Paint(){
var Size = document.getElementById('Size').value;
var Opacity = document.getElementById('opa').value;
var color = document.getElementById('color').value;
canvas = document.getElementById('PaintArea');
if(canvas.getContext){
    var ctx = canvas.getContext('2d');

    ctx.fillStyle = color;
    ctx.globalAlpha = Opacity;
    ctx.beginPath();
    ctx.arc(musX-10, musY-10, Size, 0, Math.PI*2); 
    ctx.closePath();
    ctx.fill();
}
}

function clear(){       
canvas.width = canvas.width;
}

function getMouse(event) {
musY = event.clientY;
musX = event.clientX;
Paint();
}
按钮:

<button onclick="clear()">Clear</button>

根据错误消息进行猜测。。。试试这个:

<button onclick="window.clear();">Clear</button>
清除

如果是这样的话,考虑使用一个不太模糊的函数名,比如“代码> CurrCANVASE())< /C> >/P>

  • 直接访问全局对象,其函数是:

    var _global = this;
    
    // …
    
    function clear ()
    {
      // …
    }
    
    …
    
    <button onclick="_global.clear()">Clear</button>
    
    var\u global=this;
    // …
    函数清除()
    {
    // …
    }
    …
    清楚的
    
    (您可以选择任何其他变量标识符来代替
    \u global
    ,只要它不与内置或主机定义的符号冲突。
    \u global
    是不可能冲突的标识符。)


  • 建议使用方法1,因为它减少了用户定义的全局符号的数量,从而降低了与内置符号和主机定义符号冲突的可能性。

    window
    是主机定义的属性。它不应用于访问ECMAScript全局对象。相反,使用
    var global=this
    在全局上下文中(变量标识符无关紧要),然后
    global.clear()
    。同样地,
    global.clearCanvas()
    。有关详细信息,请参阅我对该问题的评论。如果下一个浏览器提供了
    窗口.clearCanvas
    属性,该怎么办?容易出错,不推荐。原因和解决方案与我在中解释的相同
    <button onclick="clear()">Clear</button>
    
    var myObject = {
      startDraw: function (…) {
        // …
      },
    
      // …
    
      clear: function (…) {
        // …
      }
    };
    
    …
    
    <button onclick="myObject.clear()">Clear</button>
    
    var _global = this;
    
    // …
    
    function clear ()
    {
      // …
    }
    
    …
    
    <button onclick="_global.clear()">Clear</button>