【发布时间】:2016-04-06 16:16:22
【问题描述】:
我想移动剪辑区域的位置,然后在剪辑区域中绘制。为什么以下方法不起作用? 感谢您的任何启发:-) 杰拉德
<canvas id="canvas" width="150" height="150"></canvas>
<script>
function fade() {
var level = 0;
var xClip=0, yClip=0;
var step = function ( ) {
var ctx = document.getElementById('canvas').getContext('2d');
ctx.fillRect(0,0,150,150);
// Create a circular clipping path
ctx.beginPath();
ctx.arc( xClip, xClip, 60, 0, Math.PI*2, true);
ctx.clip();
// draw background
var lingrad = ctx.createLinearGradient(0,-75,0,75);
lingrad.addColorStop(0, '#232256');
lingrad.addColorStop(1, '#143778');
ctx.fillStyle = lingrad;
ctx.fillRect(-75,-75,150,150);
if (level < 15) {
level ++;
xClip = yClip = level*10;
console.log("level: " + level);
console.log("xClip: " + xClip);
setTimeout(step, 1000);
}
};
setTimeout(step,100);
}
fade();
</script>
【问题讨论】:
-
您只需要创建一次上下文。使用
ctx.save()在创建 clop 之前保存上下文状态,然后在函数底部使用ctx.restore()恢复状态。
标签: html animation canvas clip