Estoy tratando de poner en práctica una animación deporte robadas de la clase mencionada in this question, sobre todo algo que se parece a esto:animación en espera con canvas de HTML5
pero no desea utilizar archivos gráficos, y estoy tratando de implementarlo puramente en lienzo html5 y javascript. Además, quiero un fondo negro circular en lugar de uno cuadrado. Como primer paso, traté de dibujar un marco estático (sin movimiento/rotación) y lo hizo:
<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>
El resultado que obtengo es:
El problema es que, el lineCap="round"
no funciona correctamente para todas las "ranuras", y el atributo lineWidth=0
no funciona para el borde del círculo. ¿Qué estoy haciendo mal? Lo comprobé con Chrome 16.0.912.63 y Firefox 10.0, y obtuve resultados similares.
Para el siguiente paso, voy a dejar que las partes de las funciones que he creado anteriormente interactúan con
window.animationFrames = (function(callback){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){window.setTimeout(callback, 1000/60);};
})();
pero por el momento, necesito resolver este problema en primer lugar.
aquí es un plugin de jQuery para hacer la misma cosa: http: // fgnass.github.com/spin.js/, pero quieres hacer esto como una experiencia de aprendizaje, entonces es genial – asawilliams
@asawilliams ya veo. Gracias por el enlace. No quería depender de bibliotecas externas, pero lo echaré un vistazo. Tal vez pueda extraer y estudiar las partes relevantes de esto. Pero aún así, quiero saber por qué mi código anterior no funciona como se esperaba. – sawa
@asawilliams La implementación que vinculó parece funcionar sin jQuery. Lo miraré más profundo. – sawa