Me he decidido a echarle un vistazo al HTML5 y a la representación de una superficie Canvas para dibujar en 2D. Este tipo de superficie permitirá en un futuro que ya está aquí hacer juegos para la web en HTML real que se puedan usar en cualquier dispositivo sin necesidad de complementos de terceros, léase Adobe Flash.
La verdadera utilidad y potencia es poder dibujar en tiempo real sobre la superficie y a provechar todas las características de dibujo que nos proporciona, cosas que no he usado en mi ejercicio particular. Sin embargo me ha servido como introducción al uso de canvas en HTML y aquí queda como ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | <html> <head> <title>HTML 5 Canvas example</title> <script type="text/javascript"> var x = 50; var y = 50; var dx = 1; var dy = 1; var myCanvas; var myContext; var pelota; var fondo; var main = function() { // Se inicializa el canvas myCanvas = document.getElementById("mycanvas"); myContext = myCanvas.getContext("2d"); // Se cogen los elementos de imagen para pintar pelota = document.getElementById("pelota"); fondo = document.getElementById("fondo"); // Se pinta el fondo y la pelota en el canvas myContext.drawImage(fondo, 0, 0, fondo.width, fondo.height); myContext.drawImage(pelota, x, y); window.setInterval("moverPelota()", 10); }; var moverPelota = function() { if ((x > myCanvas.width - pelota.width) || (x < 0)) { dx = -dx; } if ((y > myCanvas.height - pelota.height) || (y < 0)) { dy = -dy; } x += dx; y += dy; myContext.drawImage(fondo, 0, 0, fondo.width, fondo.height); myContext.drawImage(pelota, x, y); }; </script> <style type="text/css"> canvas { border: 2px solid black; } canvas#mycanvas { width: 320px; height: 170px; } img { display: none; } </style> </head> <body onload="main();"> <canvas id="mycanvas"> Aquí debería de aparecer un balón rebotando. </canvas> <img id="pelota" src="pelota.png" width="49px" height="49px" /> <img id="fondo" src="fondo.jpg" width="320px" height="170px" /> </body> </html> |
El resultado puede verse en la web del ejemplo de uso de canvas.
Las imágenes se precargan ocultas (con display: none) porque según la especificación del HTML5 si la imagen no ha sido completamente cargada no se pintará nada. Cargándolas de este modo nos aseguramos de que se han leído completamente antes de su uso en el canvas.
Las pruebas las he realizado sobre Mozilla Firefox 4.0 Beta 7. En cualquier navegador que implemente canvas sobre html5 debería de representarse correctamente. Entre estos navegadores se incluyen Safari, Opera o Chrome. Si eres usuario de Internet Explorer ¿a qué esperas para cambiar a un navegador real?
Etiquetas: canvas, HTML, html5, JavaScript
3 comentarios en “HTML5 Canvas”
diciembre 10th, 2010 en 01:34
Jajajaja lo mejor es el final del articulo. Tengo que ponerme yo al dia con esto. Mola bastante.
diciembre 10th, 2010 en 01:56
En el navegador web de android 2.2 del desire también acabo de comprobar que funciona de lujo.
diciembre 10th, 2010 en 02:59
Mola, mola, tengo en mente empezar a ponerme con el HTML5 a corto-medio plazo, ya te seguiré la pista ;)