我想實現提到in this question的那種瓦亭動畫,尤其是一些看起來像這樣:與HTML5畫布等待動畫
但我不希望使用的圖形文件,和我試圖純粹在html5 canvas和javascript中實現它。另外,我想要一個圓形的黑色背景,而不是一個正方形的背景。作爲第一步,我試着畫靜態幀(沒有任何動靜/旋轉)和這樣做:
<html>
<head><script>
window.onload = function(){
var c=document.getElementById("waiting").getContext("2d");
c.lineCap="round";
c.fillStyle="#353535";
c.translate(100,100);
function slit(p){
shade = 256*p;
th = 2*Math.PI*p;
cos = Math.cos(th);
sin = Math.sin(th);
c.strokeStyle = '#'+((shade<<16)+(shade<<8)+shade).toString(16);
c.moveTo(55*cos, 55*sin);
c.lineTo(84*cos, 84*sin);
c.stroke();
c.closePath();
}
c.lineWidth=0;
c.arc(0,0,100,0,Math.PI*2);
c.fill();
c.lineWidth=7;
for(var i = 0;i<1;i+=0.05){slit(i);}
}
</script></head>
<body><canvas id="waiting" width=200 height=200></canvas></body>
</html>
結果我得到的是:
的問題是, lineCap="round"
對於所有「狹縫」都不能正常工作,並且lineWidth=0
屬性對於圓的邊緣不起作用。我究竟做錯了什麼?我使用Chrome 16.0.912.63和Firefox 10.0進行了檢查,結果相似。
對於下一步,我打算讓的,我在上面創建的功能部件與
window.animationFrames = (function(callback){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){window.setTimeout(callback, 1000/60);};
})();
但暫時互動,我需要首先解決這個問題。
這裏是一個jQuery插件做同樣的事情:HTTP:// fgnass.github.com/spin.js/,但你想做這個學習體驗,那很酷 – asawilliams 2011-12-27 22:10:22
@asawilliams我明白了。感謝您的鏈接。我不想依賴外部庫,但我會看看它。也許我可以提取和研究它的相關部分。但是,我仍然想知道爲什麼我的代碼無法按預期工作。 – sawa 2011-12-27 22:13:51
@asawilliams您鏈接的實現似乎沒有jQuery。我會更深入地研究它。 – sawa 2011-12-27 22:17:35