Javascript 如何设置此路径的动画?
我是HTML5的新手。 我在画布上绘制了一条路径,但我希望该路径能够设置动画,而不是立即闪烁。我怎样才能做到 下面是JS代码:Javascript 如何设置此路径的动画?,javascript,html,html5-canvas,Javascript,Html,Html5 Canvas,我是HTML5的新手。 我在画布上绘制了一条路径,但我希望该路径能够设置动画,而不是立即闪烁。我怎样才能做到 下面是JS代码: $('#draw').click(function() { var a,b; a=b=5; context.clearRect(0, 0, 500, 500); context.moveTo(centerx, centery); context.beginPath(); context.strokeStyl
$('#draw').click(function() {
var a,b;
a=b=5;
context.clearRect(0, 0, 500, 500);
context.moveTo(centerx, centery);
context.beginPath();
context.strokeStyle = "#000";
for (i = 0; i < 120; i++) {
angle = 0.1 * i;
x = centerx + (a + b * angle) * Math.cos(angle);
y = centery + (a + b * angle) * Math.sin(angle);
context.lineTo(x, y);
context.stroke();
}
});
$('#draw')。单击(函数(){
变量a,b;
a=b=5;
clearRect(0,0500500);
上下文。移动到(centerx、centery);
context.beginPath();
context.strokeStyle=“#000”;
对于(i=0;i<120;i++){
角度=0.1*i;
x=中心x+(a+b*角度)*数学cos(角度);
y=中心y+(a+b*角度)*数学sin(角度);
lineTo(x,y);
stroke();
}
});
到目前为止,我所尝试的:
使用了setInterval()
,setTimeout()
这两种方法都无效。尝试为路径渲染和计算x和y值创建不同的函数,但也没有成功!同样根据文档,在调用context.stroke()
之前,不会绘制路径,这让我想知道是否可以制作动画
编辑::jsiddle链接
要创建动画,您需要递归地绘制螺旋的一部分,并最终在某个点爆发 绘制此类动画的最佳方法是
window.requestAnimationFrame
,但也可以使用setIterval
或setTimeout
进行绘制
例如:
var i = 0;
function render(){
i++;
angle = 0.1 * i;
x = centerx + (a + b * angle) * Math.cos(angle);
y = centery + (a + b * angle) * Math.sin(angle);
context.lineTo(x, y);
context.stroke();
if (i <720)
requestAnimationFrame(render);
}
requestAnimationFrame(render);//start animation
var i=0;
函数render(){
i++;
角度=0.1*i;
x=中心x+(a+b*角度)*数学cos(角度);
y=中心y+(a+b*角度)*数学sin(角度);
lineTo(x,y);
stroke();
如果(i要创建动画,您需要递归地绘制一段螺旋,并最终在某个点爆发
绘制此类动画的最佳方法是window.requestAnimationFrame
,但也可以使用setIterval
或setTimeout
进行绘制
例如:
var i = 0;
function render(){
i++;
angle = 0.1 * i;
x = centerx + (a + b * angle) * Math.cos(angle);
y = centery + (a + b * angle) * Math.sin(angle);
context.lineTo(x, y);
context.stroke();
if (i <720)
requestAnimationFrame(render);
}
requestAnimationFrame(render);//start animation
var i=0;
函数render(){
i++;
角度=0.1*i;
x=中心x+(a+b*角度)*数学cos(角度);
y=中心y+(a+b*角度)*数学sin(角度);
lineTo(x,y);
stroke();
如果(我可以发布一个例子小提琴吗?你可以发布一个例子小提琴吗?非常感谢:)我试了几个小时:/btw你能给我一些好的链接来理解画布吗?非常感谢:)我试了几个小时:/btw你能给我一些好的链接来理解画布吗?