我试图让我的弧的终止角度,从X到Y.我可以动画一个圆弧的结束角度吗?
这是我有:http://jsfiddle.net/97dUJ/
我可以做:
var endAngle = 0 * Math.PI;
动画到:
var endAngle = 0.5 * Math.PI;
不仅仅是跳到那个角度,而且实际上是一个简单的动画,比如easeInOut或者其他东西......这可能吗?谢谢!
我试图让我的弧的终止角度,从X到Y.我可以动画一个圆弧的结束角度吗?
这是我有:http://jsfiddle.net/97dUJ/
我可以做:
var endAngle = 0 * Math.PI;
动画到:
var endAngle = 0.5 * Math.PI;
不仅仅是跳到那个角度,而且实际上是一个简单的动画,比如easeInOut或者其他东西......这可能吗?谢谢!
它很简单,你只需要添加一个setTimeout
或并增加你想要乘以结束角度的值。
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var x = canvas.width/2;
var y = canvas.height/2;
var radius = 75;
var startAngle = 1.5 * Math.PI;
var curVal = 0;
var endAngle = 0 * Math.PI;
var counterClockwise = false;
function animate(){
if(curVal < 0.5){
curVal+= 0.01;
}
endAngle = curVal * Math.PI;
context.beginPath();
context.arc(x, y, radius, startAngle, endAngle, counterClockwise);
context.lineWidth = 15;
// line color
context.strokeStyle = 'black';
context.stroke();
setTimeout(animate,30);
}
animate();
这是一个很好的例子,只需要停止功能运行一旦动画完成。如果(curVal <0.5)setTimeout(animate,30);则添加 ; } 最后。 –
你可以动画则endAngle属性清除画布和重绘最新值弧形,这样的..
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var props = {
x : canvas.width/2,
y : canvas.height/2,
radius : 75,
startAngle : 0,
endAngle : 0,
counterClockwise : false
}
function drawArc() {
context.clearRect(0, 0, canvas.width, canvas.height);
context.beginPath();
context.arc(props.x, props.y, props.radius, props.startAngle, props.endAngle, props.counterClockwise);
context.lineWidth = 15;
// line color
context.strokeStyle = 'black';
context.stroke();
}
TweenMax.to(props, 1, {endAngle: Math.PI * 2, yoyo:true, repeat:-1, ease:Quad.easeInOut, onUpdate:drawArc});
记:这是使用Tweenmax为动画
尝试使用新的'requestAnimationFrame()'thingy来完成,在渲染每个帧之后,重新绘制一个稍长的圆弧。这里有一个相关的链接:http://paulirish.com/2011/requestanimationframe-for-smart-animating/ – rmobis
我对HTML5相当陌生,对于如何采取这种方法并将其应用于该小提琴有何想法?谢谢! – ttothec
我假设你是为了教育目的而这样做的,但是如果你正在为这个商业项目工作(并且为了其他读者的利益),我强烈建议你看看D3(http:///d3js.org/),因为它会为你完成所有繁重的工作,并让你专注于最终结果。快乐学习! –