我刚刚开始使用画布来获得这种效果:
“詹姆斯邦德枪管视图开始” http://www.youtube.com/watch?v=sfXazFp68cE
我几乎到了那里:
http://jsbin.com/uyaker/8/edit
现在你可以看到我用两个圆圈剪辑我的画布(至少我尝试这样做)......但问题是重叠的区域不再被剪辑......
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(canvas.width, 0);
ctx.lineTo(canvas.width, canvas.height);
ctx.lineTo(0, canvas.height);
ctx.closePath();
ctx.moveTo(cx + r, cy);
ctx.arc(cx, cy, r, 0, Math.PI*2, true);
// check if to draw a fixed circle, every 200 pixels for 100 pixels
if(goingright && cx % 200 < 100) {
ctx.moveTo(cx - cx % 200 + r, cy);
ctx.arc(cx - cx % 200, cy, r, 0, Math.PI*2, true);
}
ctx.closePath();
ctx.clip();
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.restore();
也许这种效果在不使用剪辑的情况下是可能的,但给画布一个 css 背景图像并绘制除圆圈之外的所有内容......但我真的不知道该怎么做:/。