我正试图在html5
画布内设置一个圆形动画,但我在更新此圆圈时遇到麻烦AKA删除旧位置并绘制新位置
我的jsfiddle:
正如你所看到的那样,clear
功能并没有清除整个圆圈但是它的颜色变浅了无论如何清除旧圆圈而不清除整个画布或清除包含圆圈的小矩形? / p>
var clearCircle = function (c) {
ctx.save();
ctx.globalCompositeOperation = 'destination-out';
ctx.beginPath();
ctx.arc(c.x, c.y, c.r, 0, 2 * Math.PI, false);
ctx.fill();
ctx.restore();
};
答案 0 :(得分:1)
您只需将复合模式更改为copy
并将其全局移动即可。这将删除所有内容,但会限制您进行一次绘制操作。
<强> Modified fiddle using copy composite mode 强>
更正确的方法是使用:
clearRect(x, y, w, h)
或fillRect(x, y, w, h)
后者以防您需要背景颜色。如果要使用图像填充背景,也可以使用drawImage(img, x, y)
。
所有这些方法(复合模式除外)都允许您只绘制更新所需的区域:
调整此功能采用:
var clearCircle = function (c) {
ctx.clearRect(c.x - c.r - 1, c.y - c.r - 1, c.r*2+2, c.r*2+2);
};
<强> Modified fiddle 强>
答案 1 :(得分:0)