domingo, 28 de abril de 2013

Plantilla html5 con canvas

Plantilla simple

<!DOCTYPE html>
<html>
 <head>
 </head>
 <body>
  <canvas id="my_canvas" width="200" height="100" style="border:1px
solid #000000;"></canvas>
 </body>
</html> 

Plantilla con evento onload() y javascript

<!DOCTYPE html>
<html>
 <head>
    <script type="text/javascript" >
        var canvas;
        var ctx; //contexto del canvas.
        
        function setup(){
            // accedemos al canvas
            canvas = document.getElementById('my_canvas');
            // si se puede acceder al contexto del canvas
            if (canvas.getContext){ 
                // accedemos al contexto del canvas 
                // y llamamos a nuestra función de dibujo.
                ctx = canvas.getContext('2d');
                draw();
            }
            else { // el canvas no está soportado
                alert('Este navegador no es compatible con canvas');
            }
        }
        
        // nuestra función de dibujo
        function draw(){                
        
        }
    </script>
 </head>
 <body onload="setup()">
  <canvas id="my_canvas" width="200px" height="100px"
        style="border:1px solid #000000;"></canvas>
 </body>
</html>

html5 y canvas

HTML5 es la versión más reciente de HTML a fecha de hoy. Incluye un elemento nuevo muy interesante para la programación de videojuegos: el canvas (lienzo en español).
El canvas sólo es un contenedor de gráficos en el que se puede pintar usando un script, normalmente en lenguaje javascript. El canvas tiene algunas funciones para dibujar gráficos tales como caminos (paths, para dibujar lineas), círculos, cajas, caracteres de texto y añadir imágenes desde un archivo.

Incluir un canvas

Para incluir un canvas en una página web sólo debemos incluir lo siguiente en el HTML:
<canvas id="my_canvas" width="200" height="100"> </canvas>
Si queremos que tenga borde, por ejemplo de 1px de anchura y color negro (#000000) lo podemos añadir usando el atributo style:
<canvas id="my_canvas" width="200" height="100" style="border:1px solid 
#000000;"> </canvas>

Coordenadas del canvas

En el canvas el origen de coordenadas se encuentra en la esquina superior izquierda, que es el punto 0,0 y el eje de abcisas, eje x, u horizontal aumenta de izquierda a derecha, mientras que el eje de ordenadas, eje y o vertical aumenta de arriba a abajo.


Algunos ejemplos

La plantilla básica que usamos es la siguiente:

<!DOCTYPE html>
<html>
 <head>
    <script type="text/javascript" >
        var canvas;
        var ctx; //contexto del canvas.
        
        function setup(){
            // accedemos al canvas
            canvas = document.getElementById('my_canvas');
            // si se puede acceder al contexto del canvas
            if (canvas.getContext){ 
                // accedemos al contexto del canvas 
                // y llamamos a nuestra función de dibujo.
                ctx = canvas.getContext('2d');
                draw();
            }
            else { // el canvas no está soportado
                alert('Este navegador no es compatible con canvas');
            }
        }
        
        // nuestra función de dibujo
        function draw(){                
        
        }
    </script>
 </head>
 <body onload="setup()">
  <canvas id="my_canvas" width="200px" height="100px"
        style="border:1px solid #000000;"></canvas>
 </body>
</html>
El código anterior es una página HTML con un canvas de 200 x 100 píxeles y borde negro, que está colocado en el body del documento HTML.
En el head del documento HTML hay un script de javascript. Inicialmente se declaran 2 variables, canvas y ctx, a las que asignaremos el canvas y su contexto, respectivamente.
El atributo onload="setup()" del elemento body asigna la función setup() de nuestro script al evento onload del elemento body. Cuando se cargue el elemento body de la página, se dispara su evento onload. Con onload="setup()" hacemos que al lanzarse el evento onload se llame a la función setup() de nuestro script.
En la función setup() preparamos el terreno accediendo al canvas y asignandolo a nuestra variable canvas con la instrucción canvas  = document.getElementById('my_canvas') y luego miramos a ver si podemos acceder a su contexto. Si no podemos, es porque el navegador no es compatible con el canvas y lanzamos un diálogo de alerta. Si se puede acceder al contexto, accedemos y lo asignamos a la variable ctx, con la instrucción ctx = canvas.getContext('2d'). El 2d hace referencia a que queremos un canvas para dibujar en 2 dimensiones. También existe un contexto para dibujar en 3 dimensiones, al cual accederíamos con getContext('webgl') pero ambos son muy diferentes y de momento nos vamos a restringir a las 2 dimensiones. Finalmente, desde nuestra función setup() llamamos a nuestra función draw(), en la que incluiremos las instrucciones para dibujar en el canvas. De momento la función está vacía así que no se dibujará nada en el canvas.
A continuación vamos a poner algunos ejemplos de funciones draw para dibujar distintos tipos de cosas. Los ejemplos tienen un exceso de comentarios para explicar cada una de las instrucciones.

Colores y grosor de linea

Se cambian las siguientes propiedades del contexto del canvas:
  • lineWidth, para especificar el ancho de la linea.
  • strokeStyle, para modificar el color de la linea.
  • fillStyle, para modificar el color de relleno.

Dibujando formas con lineas

Usaremos las siguientes funciones del contexto del canvas:
  • beginPath(), para comenzar un recorrido.
  • moveTo(x,y), para moverse a un punto (sin dibujar).
  • lineTo(x,y), para dibujar una recta desde el punto actual al punto x,y especificado como argumento.
  • closePath(), para cerrar un camino.
  • stroke(), para aplicar trazo al camino.
  • fill(), para rellenar un camino, (cerrado o no).
function draw(){
    // ponemos el grosor de linea = 3 pixeles
    ctx.lineWidth = 3;
    // cambiamos el color de la linea, de negro,
    // que es el color por defecto, a rojo:
    // ctx.strokeStyle="#FF0000";
    // o bien de la siguiente forma equivalente,
    // sin usar notación hexadecimal.
    ctx.strokeStyle = 'rgb(255,0,0)';
    
    //cambiamos el color de relleno, de negro,
    // que es el color por defecto, a azul
    ctx.fillStyle = 'rgb(0,0,255)';
   
    // vamos a dibujar algunas lineas, formando un triangulo.
    ctx.beginPath();
    ctx.moveTo(50, 50); // la primera linea parte del punto 50,50
    ctx.lineTo(75, 25); // y va hasta 75,25
    ctx.lineTo(100, 50); // otra linea desde ese punto hasta 100,50
    ctx.closePath(); // y otra cerrando el triangulo.
    ctx.stroke(); // aplicar un trazo al camino.
    
    // ahora vamos a dibujar otro triangulo, pero en vez pintar
    // un trazo lo vamos a rellenar.
    ctx.beginPath();
    ctx.moveTo(50, 50); // la primera linea parte del punto 50,50
    ctx.lineTo(75, 75); // y va hasta 75,75
    ctx.lineTo(100, 50); // otra linea desde ese punto hasta 100,50
    //ctx.closePath(); // y otra cerrando el triangulo.
    ctx.fill(); // rellenar el camino trazado.
    // este triangulo es un poco más pequeño que el anterior
    // porque no tiene el trazo del borde.
    // además de rellenarlo, se lo podríamos añadir descomentando
    // la siguiente linea: ctx.stroke();                
}
El resultado de este ejemplo sería lo siguiente:

Dibujando rectángulos

Dibujar rectángulos funciona de forma similar a dibujar lineas, pero en lugar de dibujar linea a linea, podemos dibujar los 4 lados del rectángulo con una única instrucción:
  • rect(x, y, width, height)
x e y especifican las coordenadas de la esquina superior izquierda del rectángulo.

function draw(){
    ctx.beginPath();
    ctx.rect(15,30, 100, 50); // rectángulo de 100x50 situado en 15,30
    ctx.strokeStyle = 'rgb(255, 0, 0)'; // linea roja.
    ctx.stroke();// pintamos el borde
    ctx.fillStyle = 'rgb(128,128,128)'; // un color gris.
    ctx.fill(); // rellenamos el rectángulo    
}
El resultado de este ejemplo:


Dibujando círculos (y arcos de circunferencia o secciones de círculo)

Sólo hay una función nueva para dibujar arcos de circunferencia (si luego se usa el método stoke()) o secciones de círculo (si luego se rellena con el método fill()). Método es otra forma de llamar a las  funciones de una variable, en este caso las funciones stroke() y fill() de la variable ctx (contexto del canvas):
  • arc(x,y,r,start,stop): x e y son las coordenadas del centro, r el radio, start el ángulo de inicio del arco (en radianes) y stop el ángulo final del arco (en radianes).
function draw(){
    ctx.beginPath();
    ctx.arc(95,50,40,0,2*Math.PI);// centro en 95,50, radio 40,
    // arco desde 0 radianes a 2*pi, que es la circunferencia completa
    ctx.stroke(); // para dibujar la linea, negra por defecto.
    ctx.fillStyle = 'rgb(0,255,0)'; // color de relleno verde
    ctx.fill(); // lo rellenamos.
}
El resultado de este ejemplo sería:
Hay que tener en cuenta que el ángulo 0 radianes se correspondería con el este si hubiese una rosa de los vientos dibujada, y que el ángulo crece a partir de ese punto en el sentido de las agujas del reloj (sentido horario):

Escribir texto en el canvas

Esto puede resultar muy útil. Para escribir hay que definir las propiedades del texto y luego escribir el texto en el canvas, pudiendo elegirse entre escribir el texto relleno o sólo el trazo exterior. Las funciones son:
  • font("propiedades del texto"): donde propiedades del texto es un estilo a la manera de CSS. Por ejemplo se puede definir tamaño y tipo de fuente. Por ejemplo "15px Arial"
  • fillText(texto, x, y): dibuja el texto relleno a partir de las posiciones x,y del canvas.
  • strokeText(texto, x, y): dibuja sólo el trazo exterior del texto a partir de las posiciones x, y el canvas.
function draw(){
    ctx.font="15px Arial";
    ctx.fillText("Hola Mundo!",0,15);//como la fuente es de 15 píxeles
    // el texto aparece a partir de la esquina superior izquierda.
    ctx.font="30px Arial";// aumentamos el tamaño de la fuente
    // para que se aprecie que strokeText sólo pinta el borde
    ctx.strokeText("Hola Mundo 2!", 0, 75); // sólo trazo.
}
Y el resultado:

Incluir imágenes en el canvas

Esta es una de las funciones más útiles del canvas y por ello le vamos a dedicar un post completo específicamente para ello.

martes, 16 de abril de 2013

El DOM

El DOM es el Document Object Model, el modelo de objeto documento para un documento HTML. Es un estándar que define cómo acceder, cambiar o eliminar mediante un script un elemento en una página web.
Hay un tutorial específico para el DOM en w3schools. Aquí nos vamos a ceñir a lo mínimo que necesitaremos de momento, que es acceder a un elemento de un documento HTML por su atributo id y cambiar el contenido de un elemento HTML.
Los elementos del DOM tienen funciones (métodos) y propiedades. De momento sólo vamos a necesitar usar uno de cada: la función getElementById de la variable document, que contiene todo el documento HTMLy la propiedad innerHTML de los elementos que tienen etiqueta de apertura y de cierre, que contiene el HTMLque queda entre ambas etiquetas, el HTML"de dentro" del elemento.

Acceder a un elemento por su id con getElementById("id")

var element=document.getElementById("id_del_elemento")
Ejemplo:
si tenemos la siguiente página web con un canvas con id="my_canvas"
<html>
 <head> 
</head> 
<body>
  <canvas id="my_canvas" width="200" height="100"></canvas> 
</body>
</html>
accederíamos al canvas desde un script javascript (y lo asignaríamos a una variable llamada canvas) con :
var canvas = document.getElementById("my_canvas");

Cambiar el contenido de un elemento cambiando su propiedad innerHTML.

En particular, cambiar el contenido de texto de un elemento. Recordemos que el contenido de un elemento HTML es lo que queda entre las etiquetas de apertura y de cierre. Uno de los errores más comunes consiste en cambiar el contenido de un elemento que no tiene texto como contenido sino que contiene otros elementos. Por ejemplo el elemento <head> suele contener otros elementos HTMLen lugar de texto.

Por ejemplo, si tenemos el siguiente elemento:
<title id="titulo">Este es el viejo título de la página </title>
podríamos cambiar el texto del título de la página web mediante un script de javascript con las siguientes instrucciones:
var titulo =  document.getElementById("titulo");
titulo.innerHTML = "Nuevo Título!!!!";
Para abreviar se podrían encadenar ambas instrucciones en una sola:
document.getElementById("titulo").innerHTML = "Nuevo Título!!!!";

Esto es todo lo que necesitamos saber sobre el DOM de momento.

Introducción a javascript

Se va a hacer una muy somera introducción a javascript: qué es y cómo se incluye en una página web.Para aprenderlo hay multitud de recursos en la web, muchos de ellos gratuitos.
Javascript es un lenguaje de programación con las siguientes características principales:
  • interpretado: no se compila para generar un ejecutable, lo interpreta otro programa, normalmente un navegador web.
  • imperativo: un programa consta de instrucciones.
  • debilmente tipado: no se fuerza que las variables sean de tipos concretos. Se puede asignar cualquier tipo de datos a cualquier variable, aunque antes hubiese contenido otro tipo de datos.
  • orientado a objetos, aunque se puede pueden hacer programas que no lo aprovechen.
Sobre todo se utiliza en el lado del cliente (el navegador) para mejorar la interfaz de usuario en páginas web dinámicas. Es el lenguaje de scripting de la web más usado y extendido. Si el HTML es el contenido de la página y el CSS su apariencia, el javascript sería la interactividad (a grosso modo).

Javascript tiene una sintaxis similar al lenguaje de programación C y a pesar de su nombre, no tiene nada que ver con el lenguaje de programación Java.

En javascript, el programa en si se encuentra en la página web en forma de script (guión o secuencia de comandos). Puede estar dentro del propio HTML o bien puede estar en un archivo separado.

Incluir javascript en una página web

El programa javascript se puede incluir en una página web entre las etiquetas HTML <script> y </script>. En función de lo que vaya a  hacer el script y del diseño de la página, se puede incluir dentro del elemento <head> o del elemento <body>. Por motivos de compatibilidad con algunos navegadores y con versiones anteriores de HTML, conviene incluir el atributo type = "text/javascript".
Un ejemplo de inclusión del script dentro del elemento <head>:
<!DOCTYPE html>
<html>
 <head>
  <script type="text/javascript">
   alert("Hola mundo!");
  </script>
 </head>
 <body>
 </body>
</html> 
Este script consiste en una única instrucción que llama a la función alert con una cadena de texto (va entre comillas dobles) como argumento: "Hola mundo!". Las instrucciones deben terminar con punto y coma. La función alert hace salir un cuadro de alerta con el texto que se le haya pasado con argumento. El cuadro de alerta tiene un botón "Aceptar" para cerrarlo.

Incluir javascript desde otro archivo

Muchas veces, por motivos de claridad, reusabilidad y mejor organización del código, se separa el HTML de una página en un archivo .htm o .html y el javascript en uno o más archivos diferentes con extensión .js. Para incluir un archivo conteniendo un script javascript en un archivo HTML se usan también las etiquetas <script> y </script>, pero se lugar de poner el script entre ambas, se usa el atributo src de la etiqueta <script> para definir el archivo que se desea incluir. El atributo src puede ser un camino absoluto o un camino relativo y es un URL, así que puede inluirse en una página un archivo .js que se encuentre en una localización de internet que no tenga nada que ver con la página original, por ejemplo para incluir una librería que ha desarrollado un tercero y a la que se proporciona acceso desde internet.
Por ejemplo, para incluir la popular librería jQuery:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js">
</script>
Por otra parte, si tenemos una carpeta con un archivo miPagina.html y un archivo misFunciones.js. Para incluir el archivo .js deberíamos escribir lo siguiente en miPagina.html:
<script type="text/javascript" src="misFunciones.js"></script> 
Por motivos de orden, los archivos con javascript no se suelen poner al mismo nivel que los archivos html, supongamos que dentro de la carpeta tenemos el archivo html y otra carpeta llamada "js" donde se encuentra el archivo javascript. En ese caso:
<script src="/js/misFunciones.js"></script>
Tras esta breve presentación del lenguaje javascript, conviene ir a cualquiera de los muchos recursos que hay disponibles en internet para aprenderlo.

sábado, 6 de abril de 2013

Plantilla html

<!DOCTYPE html>
<html>
 <head>
 </head>
 <body>
 </body>
</html>

Introducción a html

Una pequeña introducción al html, que no sustituye a ninguno de los muchos recursos para aprender html que hay en la web. El html puede ser un poco intimidante por la cantidad de etiquetas y atributos y opciones de posicionado. Con esta introducción se pretende presentar lo básico que es necesario conocer para empezar a hacer cosas en html.
 
Html, hypertext markup lenguaje, lenguaje de marcado de hipertexto, es un lenguaje que sirve para describir documentos, específicamente páginas web. Es parte del un lenguaje más extenso y general XML o XHTML (la X viene de eXtendido) que sirve para describir todo tipo de documentos.
En html un documento está formado por elementos. Cada elemento se escribe mediante etiquetas (o marcas, de ahí lo de lenguaje de marcado).

Etiquetas html (tags)

Las etiquetas constan de una o más palabras rodeadas por corchetes angulares(<,>). Pueden ser de apertura o de cierre. Las de cierre comienzan por una barra / dentro de los corchetes angulares.

Ejemplo:
Etiqueta de apertura: <html>
Etiqueta de cierre: </html>

Elementos html

Hay 2 tipos de elementos en cuanto al número de etiquetas:
  • Elementos con 2 etiquetas, una de apertura y otra de cierre.
  • Elementos con 1 etiqueta. El ejemplo más claro es <br>, que sirve para marcar un salto de linea.
Los elementos pueden tener 2 tipos de componentes:
  • atributos: suelen seguir al identificador del tipo de etiqueta y proporcionan información adicional acerca del elemento. Vienen en forma de pares nombre_de_atributo = "valor"
  • contenido: Es lo que queda entre las etiquetas de apertura y cierre.
Ejemplo:
<a href="http://www.w3schools.com"> buena página para aprender html</a>

Cómo se vé en un navegador web:   buena página para aprender html

En este ejemplo tenemos un elemento html que es un hipervinculo o enlace. Los enlaces se marcan con la etiqueta <a>. El hipervínculo tiene un atributo href que se utiliza para especificar la página a la que apunta el hipervinculo. Este hipervinculo apunta a http://www.w3schools.com. El enlace tiene un contenido, que es el texto: buena página para aprender html. El enlace termina con una etiqueta de cierre de hipervínculo: </a>

Hay elementos y etiquetas html para marcar todo tipo de elementos que pueden incluirse en un documento:
distintos niveles de encabezado: h1, h2, h3, h4...
hipervinculos: <a>
saltos de linea: <br>
párrafos: <p>
imágenes: <im>
párrafos pre-formateados: <pre>
y una larga lista más, que no tiene sentido repetir aquí.

Algunas particularidades del html

  • El html no es sensible al caso: las etiquetas, atributos, etc se pueden escribir en mayúsculas, minúsculas o cualquier combinación de las mismas. A pesar de ello conviene seguir un estilo consistente por claridad. En particular yo prefiero escribir todo en minúsculas.
  • En un documento html el formato viene especificado en el propio documento, da igual el formato que se le dé al archivo en si. Por ejemplo:
<p>
Esto es un párrafo con una primera linea
y una segunda linea,
y una tercera, pero como no se han especificado los saltos de linea con
etiquetas, el texto sale todo seguido en un navegador web, ocupando el
espacio que tenga que ocupar.
</p>

En un navegador web eso se ve:

Esto es un párrafo con una primera linea y una segunda linea, y una tercera, pero como no se han especificado los saltos de linea con etiquetas, el texto sale todo seguido en un navegador web, ocupando el espacio que tenga que ocupar.

Para especificar los saltos de linea habría que haberlos marcado con etiquetas <br>:
<p>
Esto es un párrafo con una primera linea <br>
y una segunda linea, <br>
y una tercera, pero como no se han especificado los saltos de linea con
etiquetas, el texto sale todo seguido en un navegador web, ocupando el 
espacio que tenga que ocupar.
</p> 

o bien haber usado la etiqueta <pre> en lugar de <p>, que sirve para marcar texto preformateado, que es texto que se mostrará tal cual está escrito en el archivo html.
<pre>
Esto es un párrafo con una primera linea
y una segunda linea,
y una tercera, pero como no se han especificado los saltos de linea con 
etiquetas, el texto sale todo seguido en un navegador web, ocupando el 
espacio que tenga que ocupar.
</pre>

  • Los caracteres barra de espacio consecutivos se eliminan, hasta dejar sólo uno. Así:
esto es un texto con muchos              espacios en blanco en el medio

Si no se usa la etiqueta <pre> se vé en un navegador como:
esto es un texto con muchos espacios en blanco en el medio
  •  Los comentarios (notas explicativas o similar que se escriben en un archivo pero que no se quiere que interprete el navegador web y que es como si no estuvieran escritas) se abren con <!-- y se cierran con -->

Orden y colocación de elementos

Cómo se ordenan y colocan los elementos en una página es un tema complicado y daría para un curso en sí mismo. Como sólo pretendemos dar unas nociones muy básicas de html se aconseja ir a una buena página para aprender html para esa y otras cuestiones.

Un documento html5 mínimo

A continuación se presenta el esqueleto mínimo de documento html. Estrictamente podría tener menos elementos, pero lo más común es que tenga al menos un elemento<html> y dentro de ellos un elemento <head> y un elmento <body>. Además el elemento <!DOCTYPE html> especifica que se trata de un documento html5. Para el elemento DOCTYPE es el único para el que me salto la norma de escribir las etiquetas en minúscula.

<!DOCTYPE html>
<html>
 <head>
 </head>
 <body>
 </body>
</html>

Eso es un documento html válido. Si se escribe en un archivo en un editor de texto y se guarda con extensión .html o .htm y luego se abre ese archivo con un navegador web se vé..... nada :D porque aparte de declarar los elementos básicos no hemos incluido ningún contenido en ellos. Lo normal será incluir un <title> en el <head> y algún encabezado y texto en el <body>. Por ejemplo:

<!DOCTYPE html>
<html>
 <head>
  <title> El título de la página sale en la pestaña del navegador </title>
 </head>
 <body>
   <h1> Encabezado de primer nivel <h1>
  <p> Texto.....................</p>
 </body>
</html>

Para trastear con html

Un par de opciones sencillas:
  • usar un editor de texto y crear un archivo con extensión .htm o .html y abrirlo con un navegador web.
  • usar el editor interactivo de w3schools. En un lado se escribe y en el otro aparece el resultado tras presionar el botón "Submit code".

viernes, 5 de abril de 2013

Recursos para aprender html, html5 y javascript

Cursos, tutoriales, hojas de referencia y guías online... hay gran cantidad de recursos disponibles en la web para aprender y consultar cosas acerca de HTML5 y javascript y una búsqueda en google arroja un montón de resultados en los que los primeros resultados seguramente sean una buena opción. Como hay tanta oferta sólo voy a poner aquí las que me han gustado. Iré actualizando esta lista a medida que vaya encontrando cosas interesantes.

Generales

  • w3schools: web gratuita, con cursos, tutoriales y referencia de HTML, HTML5, javascript y muchos otros temas relacionados con el desarrollo web. Aunque hay gente a la que no le gusta y dicen que tiene algún fallo, a mi me parece de las mejores, tanto para aprender desde 0 como para usar de referencia.
  • Desarrollo Web para no iniciados, en 5 partes, de cartuchoGL.
  • Varios libros de programación de O'Reily para leer online, en O'Reilly Atlas.

HTML5

Canvas

Javascript

Depuración

Herramientas

Para programar en html5 y javascript lo único estrictamente necesario es un editor de texto sencillo y un navegador web.

Editor de texto

Se podría usar el bloc de notas de Windows o cualquiera de los editores de Linux, pero recomiendo un editor un poco más avanzado, que sin perder simplicidad de uso, tenga características básicas como el resaltado de la sintaxis. Cualquiera de los 2 siguientes es buena opción:

  • Notepad++: de código libre y gratuito. Muy sencillo de usar y bastante completo. Si no tienes práctica con el Sublime Text 2 usa éste.
  • Sublime Text 2: de código cerrado y de pago, pero con versión de prueba sin límites de uso. Con prestaciones bastante más avanzadas pero por ello más dificil de usar bien. Se puede descargar la versión de prueba para Windows 32 y 64 bit, Linux 32 y 64 bit y Mac OS X en la página web oficial.

Navegador Web

Podría valer cualquiera, en principio, pero cada uno de ellos y cada versión va implementando cada vez más características del estándar de html5 y de javascript, así que lo recomendable es usar la última versión de un navegador que tenga una buena compatibilidad con html5 y javascript. Además hay ciertas incompatibilidades entre unos navegadores y otros, así que lo recomendable es usar uno que se ciña bastante bien al estándar, por ejemplo:


Hojas de referencia

Esas son las herramientas necesarias, pero como complemento no está de más tener un par de hojas de referencia rápida para consultar la sintaxis, tanto de html5 como de javascript:
  • Html5 Quick Reference Guide: descargable en pdf desde esta página del sitio web de Veign.
  • Javascript Reference Card: descargable en pdf desde esta página de Addison-Wesley.
  • Html5 Canvas Cheat Sheet: pdf.

Otras hojas de referencia (para gustos los colores):


Detección de errores en javascript

  • JSHint: en versión web y también disponible como plugin para algunos editores de texto populares, en partitcular, JSLint para Notepad++.(El plugin JSLint para Notepad++ es compatible con JSHint).
  • JSLint: en versión web y también en el plugin JSLint para Notepad++.
Las dos herramientas son similares, JSLint es la original y JSHint surgió después. Ha habido grandes discusiones en internet acerca de ambas herramientas y sus distintas filosofías. Sin ganas de entrar en polémicas, yo prefiero JSHint porque no se queja de las declaraciones de variables en la instruccion for. Resulta que algo tan común y correcto como:

for(var i=0; i < iteraciones; i++){}

JSLint lo considera  una aberración.

Presentación

El objetivo de este blog es recopilar notas acerca de programación en html 5 y javascript y servir de sencillo tutorial de iniciación. La idea no es hacer un curso de html5 ni de javascript (ya hay muchos y buenos cursos y tutoriales sobre el tema) sino proporcionar las mínimas bases para desarrollar juegos sencillos  para ejecutar en local.