0

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

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

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>
4

2 回答 2

0

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

于 2013-05-12T18:54:31.107 回答
0

看起来问题可能是因为您没有清除整个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);
}

演示

于 2012-08-26T07:53:44.533 回答