按下按钮时图像持续闪烁

Image is flickering continuously in pressing button?

本文关键字:闪烁 图像 按钮      更新时间:2023-09-26

当我连续按下按钮时,图像闪烁。问题可能出现在ctx.clearRect(0,0,100,500)中。我该如何解决这个问题?

我正在尝试在HTML5画布中制作动画。我需要画布上的一个移动对象,当我按下按钮时,另一个移动的对象会跟随前一个移动而不闪烁。

function draw(x,y){
    var canvas = document.getElementById("canvas"); 
    var ctx = canvas.getContext("2d");
    ctx.save();
    ctx.clearRect(0,0,100,500); // This may be the problem
    var img=document.getElementById("Image");
    ctx.drawImage(img,50,y);
    ctx.restore();
    y -= 10;
    var loopTimer = setTimeout('draw('+x+','+y+')',50);
}

HTML 5

<button onclick="draw(0,500)">Draw</button>
<canvas id="canvas" width="600" height="500">
</canvas>

看起来问题可能是因为您没有清除整个canvas。试试这个:

function draw(x,y){
    var canvas = document.getElementById("canvas"); 
    var ctx = canvas.getContext("2d");
    ctx.save();
    ctx.clearRect(0,0, canvas.width, canvas.height);
    var img=document.getElementById("Image");
    ctx.drawImage(img,50,y);
    ctx.restore();
    y -= 10;
    var loopTimer = setTimeout('draw('+x+','+y+')',50);
}

演示

当你多次按下按钮时,图像会闪烁,这意味着你多次启动setTimeout()。添加一个变量以检查它是否已被按下。