我在JSFiddle中制作了一个快速简单的解决方案,以更好、更快地解释:
var Canvas = document.getElementById("canvas");
var ctx = Canvas.getContext("2d");
var startAngle = (2*Math.PI);
var endAngle = (Math.PI*1.5);
var currentAngle = 0;
var raf = window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.msRequestAnimationFrame ||
window.oRequestAnimationFrame;
function Update(){
//Clears
ctx.clearRect(0,0,Canvas.width,Canvas.height);
//Drawing
ctx.beginPath();
ctx.arc(40, 40, 30, startAngle + currentAngle, endAngle + currentAngle, false);
ctx.strokeStyle = "orange";
ctx.lineWidth = 11.0;
ctx.stroke();
currentAngle += 0.02;
document.getElementById("angle").innerHTML=currentAngle;
raf(Update);
}
raf(Update);
http://jsfiddle.net/YoungDeveloper/YVEhE/3/
由于浏览器选择fps帧速率,我想独立于帧速率旋转环。因为现在,如果速度是30fps,它会旋转得更慢,但如果是60fps,则会更快,因为每个调用都会添加其旋转量。根据我的理解,从几个线程中了解到它与getTime有关,我确实尝试过,但无法完成,我需要在10秒钟内旋转一次。
另一件事是角度,它会不断增加,经过很长时间后,它会崩溃,因为变量最大值将被超过,所以如何使旋转保持平稳?
谢谢阅读!