【发布时间】:2011-08-01 13:43:41
【问题描述】:
我正在尝试为一个圆圈设置动画,然后水平移动它,效果很好。然而,当圆圈移动时,我必须在那个圆圈上做一个 clearRect ,以便它在水平方向上重新绘制它自己。当我做一个 clearRect 时,它也会使背景周围有白框,因此它会在圆圈移动的方向上成为一条白色水平线。
- 有没有办法在没有 clearRect 的情况下清除圆圈?
- 如果我必须在 clearRect 之后继续重绘背景,则当该区域中有 10 个圆圈在移动时,画布会闪烁。
还有其他方法可以解决这个问题吗?
function drawcircle() {
clear();
context.beginPath();
context.arc(X, Y, R, 0, 2*Math.PI, false);
context.moveTo(X,Y);
context.lineWidth = 0.3;
context.strokeStyle = "#999999";
context.stroke();
if (X > 200)
{
clearTimeout(t); //stop
}
else
{
//move in x dir
X += dX;
t = setTimeout(drawcircle, 50);
}
}
function clear() {
context.clearRect(X-R, Y-R, 2*R, 2*R);
}
【问题讨论】:
-
画布上只有圆圈吗?
-
不,不是,我从一些简单的东西开始,然后希望在引入更多圆形或其他形状时使其更通用。我还没有测试过,但也许你可以在它沿着画布移动时及时设置它的可见性?只是一个想法。