我正在嘗試創建一個可以繪製類似於進度條的圓的動畫。我打算在旋轉木馬上使用它來跟蹤下一張幻燈片何時到來。我遇到的問題是我不知道如何改變動畫的持續時間。我嘗試調整幀速率,它可以工作,但動畫變得非常不穩定。 setInterval類型的作品,但它顯示整個圓圈,而不僅僅是我想要的一部分,所以我不能正確地計時。我需要能夠控制動畫的速度,減慢動畫的速度,而不會讓它停頓。我正在處理的代碼如下。使用請求動畫幀更改畫布動畫的持續時間
<script>
(function() {
var requestAnimationFrame = window.requestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.msRequestAnimationFrame;
window.requestAnimationFrame = requestAnimationFrame;
})();
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var centerX = canvas.width/2;
var centerY = canvas.height/2;
var radius = 90;
var endPercent = 85;
var curPerc = 0;
var circ = -Math.PI;
var quart = -(Math.PI * 2) + 1;
function animate(current) {
context.clearRect(0, 0, canvas.width, canvas.height);
context.beginPath();
context.arc(centerX, centerY, radius, -(quart), ((circ) * current) - quart, true);
context.lineWidth = 3;
context.strokeStyle = '#000';
context.stroke();
curPerc++;
if (curPerc < endPercent) {
requestAnimationFrame(function() {
animate(curPerc/100)
});
}
}
animate();
</script>
這裏是一個[好文章](https://www.viget.com/articles/time-based-animation)和[github上要旨](HTTPS://要旨。 github.com/greypants/3739036)伴隨它,基於時間的畫布動畫。 –