5 de noviembre de 2016
Última actualización: 21 de agosto de 2020.
CANVAS es una alternativa para crear animaciones interactivas y multiplataforma que funcionen en dispositivos móviles y computadoras de escritorio.
En el año 2010 Steve Jobs le declaró la guerra a Adobe Flash para apoderarse del mercado y los dólares de las rich internet applications. Como alternativa a Adobe Flash Steve Jobs sugirió utilizar la naciente tecnología de CANVAS o crear una app con código nativo (donde el pago de la licencia va para Apple y por cada venta Apple se lleva su comisión)
Ahora en el año 2016, ya sin soporte para Adobe Flash en los dispositivo móviles, hay varias alternativas para crear animaciones multiplataforma:
En estos 6 años han surgido animaciones y videojuegos hechos con canvas bastante interesantes. Tenemos por ejemplo:
La facilidad de uso y el poder de Adobe Flash produjeron en su tiempo un auge en el desarrollo de videojuegos. Casi cualquiera podía hacer su videojuego. Adobe Flash liberó el potencial creativo de miles de personas a lo largo del mundo.
Con CANVAS las cosas son diferentes... ni es tan fácil ni tan poderoso como Adobe Flash.
Comienzan a surgir programas que permiten animar en CANVAS, tenemos por ejemplo:
Durante varios años google ofreció swiffy, una herramienta para convertir animaciones en Flash en animaciones en CANVAS. Desafortunadamente en el año 2016 Google descontinuó el servicio y dejó a muchos usuarios huérfanos.
Para animar en CANVAS se necesita javascript. Todo se crea con javascript. Javascript es a CANVAS, lo que ActionScript era a Adobe Flash.
CANVAS utiliza un elemento nuevo de HTML5:
Con ayuda de los atributos width y height podemos definir el ancho y el alto de nuestro CANVAS:
Es conveniente asignar un atributo id a nuestro elemento canvas, con ello podremos referirnos a él y utilizarlo desde javascript:
Agregaremos un marco de color con CSS a nuestro CANVAS para distinguirlo:
Insisto nuevamente: para crear animaciones en canvas necesitamos javascript. En nuestro documento debemos insertar el código javascript para crear nuestra animación. En estos ejemplos estamos ya usando los ES6 modules de javascript, por lo que el código javascript debe ir después del elemento canvas y especificado el type. Ejemplo:
El código completo para crear un CANVAS sería:
El resultado de este ejercicio se puede ver aquí: Mi primer canvas.
¿Dónde están las explosiones? ¿Dónde está la animación? ¡Devúelvanme mi dinero! Por ahora hemos sólo hemos creado nuestro CANVAS.
CANVAS tienes métodos que permite dibujar líneas, parábolas, rectángulos, cuadrados, círculos, etc..
Para dibujar un círculo, un rectángulo o una línea podemos usar los métodos, propiedades y eventos del objet context.
Para dibujar un círculo el código necesario es:
El código completo para dibujar un círculo en nuestro CANVAS sería:
El resultado de este ejercicio se puede ver aquí: Dibujando un círculo en CANVAS.
Se pueden insertar imágenes jpg, png o svg en nuestro CANVAS. Incluso es posible insertar vídeos en formato .mp4 u .ogg. Más aún, se puede extraer un cuadro / frame de un vídeo e insertarlo en el CANVAS.
Para insertar imágenes jpg, png o svg el código necesario es:
El código completo para insertar una imagen en nuestro CANVAS sería:
El resultado de este ejercicio se puede ver aquí: Insertando una imagen en canvas
¿Y que hay de la animación? En tiempos remotos se utilizaba el método setInterval() de javascript para hacer animaciones en canvas. Se lograba animar, pero era ineficiente.
Ahora se ha creado el método requestAnimationFrame(). Paradójicamente hay navegadores que pueden trabajar con CANVAS... pero no con requestAnimationFrame(). RequestAnimationFrame() intenta ejecutar una función 60 veces por segundo... si el navegador y el dispositivo utilizado lo permite.
CANVAS crea animaciones cuadro por cuadro, frame by frame. 100 años después de la invención del cine se sigue usando el mismo método para animar. Se dibuja un cuadro. Se dibuja otro cuadro. Se dibuja otro cuadro. Y así hasta el infinito. El secreto está en mostrar sucesivamente esos cuadros para crear la ilusión de animación. El método RequestAnimationFrame() intenta mostrar 60 cuadros por segundo. ¡Más rápido que el cine!
A continuación crearemos una animación sencilla. Una imagen la desplazaremos de izquierda a derecha. Para crear esa animación podríamos utilizar este código:
El código completo para insertar animar una imagen en nuestro CANVAS y animarla sería:
El resultado de este ejercicio se puede ver aquí: animar una imagen en CANVAS.
Para los curiosos: ¿Que pasaría si no borramos el cuadro previamente dibujado por CANVAS? El resultado de este ejercicio se puede ver aquí: animar una imagen en CANVAS sin borrar el cuadro previo.
Con CANVAS se pueden crear animaciones sucesivas, interactivas y que simulen escenas como en Adobe Flash. El resultado de este ejercicio se puede ver aquí: Animación sucesiva e interactivas en canvas
El código fuente de esta animación es:
Javascript nos permite crear objetos con sus propiedades, métodos y eventos. Esos objetos posteriormente los podemos mostrar y animar en CANVAS. El resultado de este ejercicio se puede ver aquí: Crear objetos con propiedades, métodos y eventos y animarlos en canvas
El código fuente de esta animación es:
Se pueden combinar animaciones cuadro por cuadro ( frame by frame ) hechas con canvas con animaciones cuadro por cuadro ( frame by frame ) hechas con la técnica de animaciones de celda (cell animation)
100 años después de la invención del cine se sigue usando el mismo método para animar: se dibuja un cuadro, se dibuja otro cuadro, se dibuja otro cuadro... Y así hasta el infinito. El secreto está en mostrar sucesivamente esos cuadros para crear la ilusión de animación.
La técnica de animaciones de celda (cell animation) sigue el mismo principio: : se dibuja un cuadro, se dibuja otro cuadro, se dibuja otro cuadro... Y así hasta el infinito. El secreto está en mostrar sucesivamente esos cuadros para crear la ilusión de animación.
Esas animaciones cuadro por cuadro se pueden guardar en una imagen en formato jpg, png o svg. Con ayuda de sofware libre como Inkscape o Gimp podemos crear imagenes de mapas de bits (bitmaps) o imagenes svg con animaciones de celda. Entre cuadro y cuadro (frame y frame) nuestro objeto o sujeto a animar debe tener algun cambio para poder generar la ilusión de movimiento.
El resultado sería una tira (sprite: bitmap bidimensional) como esta:
El sprite debe verse como una secuencia de imagenes, que se puede dividir cuadro por cuadro / frame by frame.
Este sprite tiene 12 cuadros de 100 pixeles de ancho por 100 pixeles de alto:
Esa tira (sprite) podemos animarla usando canvas y javascript. El resultado de este ejercicio se puede ver aquí: Sprite animado en canvas
El código fuente de esta animación es:
Mozilla Developer Network Sitio para aprender html5, javascript, css
W3Schools Sitio para aprender html5, javascript, css, php, sql
CodeAcademy Sitio para aprender html5, javascript, css, php, sql
Comenta y opina este texto Lee mi libro de visitas
© 1997-2024 Alain García
albegago@hotmail.com
Twitter: @feesgo
YouTube
El vínculo a este documento es:
http://www.alaingarcia.net/weird/animaciones_html5_canvas_javascript.php
Puedes apoyar a este sitio invitándome a comer...
Este sitio utiliza cookies propias y de terceros para mejorar sus servicios. Si continua navegando, entendemos que acepta su uso. Política de Privacidad