¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí

Los métodos de diseño

La etiqueta Canvas

El archivo 7_1_espiral.html muestra una espiral animada. El diseño de la espiral se ha detallado en el capítulo La Web, y ahora agregaremos cierta interacción mediante JavaScript para modificar la velocidad de rotación de la espiral, por ejemplo.

images/07RI01.png

La captura de pantalla anterior muestra en su parte izquierda información relativa al número de imágenes por segundo (o frames per second, fps) y a la derecha cuatro botones. El primero permite detener la animación, el siguiente ralentiza la animación, el tercero la acelera y el último permite pasar a pantalla completa.

El código HTML no contiene nada nuevo.

<body onload="dibuja()" >  
   <div id="fullscreen">  
       <canvas id="espiral_id" width="600" height="600"></canvas> 
       <span class="fs-button"></span>  
       <span class="mas_btn"></span>  
       <span class="menos_btn"></span>  
       <span class="stop_btn"></span>  
   </div>  
</body> 

Tenemos, por tanto, un div para la pantalla completa, la etiqueta canvas para el dibujo de la espiral y, a continuación, cuatro span que permiten mostrar los botones.

Los estilos de las clases de los span utilizan la tipografía ModernPictogramsNormal para mostrar los pictogramas.

Existe un evento onload en la etiqueta body que permite poner en marcha la animación invocando a la función dibuja().

Se utiliza una nueva instrucción en la función dibuja, se trata...

La etiqueta SVG

El formato de diseño SVG permite dibujar mediante etiquetas. Puede crearse en un editor de código o exportarse mediante una aplicación de diseño vectorial.

Es posible, también, utilizar CSS para configurar el aspecto y scripts para las interacciones. En el siguiente ejemplo, el script es, realmente, ECMAScript.

A modo de cultura general, ECMAScript está en el origen de JavaScript. La tecnología Flash utiliza ActionScript, que parte también de ECMAScript, produciendo sintaxis muy similares.

Ejemplo de tooltip

Podríamos escribir un libro completo acerca del formato SVG. El siguiente ejemplo nos va a permitir hacernos una idea sobre lo que es posible realizar. El archivo 7_2_tooltip.svg muestra una animación y algo de interacción.

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE svg [  
     <!ENTITY duracionAnimacion "2s">  
]> 

El encabezado del archivo SVG es XML. A continuación, la entidad (ENTITY) es el equivalente a una variable. Aquí, duracionAnimacion memoriza el texto "2s" que será la duración de la que haremos con SVG.

<svg xmlns="http://www.w3.org/2000/svg" onload="init(evt)"   
width="480" height="300">  
  
    <style type="text/css">  
        .texto {  
        font-family: Arial, sans-serif;  
        font-size: 14px;  
        }  
        .tooltip {  
        font-size: 12px;  
        }  
        .tooltip_bg {  
        fill: white;  
        stroke: #800;  
        stroke-width: 2;  
        opacity: 0.90;  
        }  
    </style> 

El encabezado del SVG contiene un elemento onload, como con HTML. El CSS se parece en gran medida a lo que se utiliza en HTML.

Las instrucciones específicas...

Ventajas e inconvenientes de ambas tecnologías

Existen grandes diferencias entre <canvas> y <svg>.

Cuando se realiza un diseño utilizando <canvas>, la imagen, una vez creada, no es del todo accesible, es decir, el navegador muestra los píxeles del color correspondiente en el lugar indicado, pero a continuación es imposible programar un píxel o un rectángulo. El diseño, una vez se muestra en pantalla, es como un gran JPG. En cambio, como hemos visto en la sección anterior, <svg> permite, una vez se representa el dibujo en la pantalla, interactuar con todos los elementos. De modo que si hace falta incluir cierta interacción, <svg> es más práctico. Es posible crear el mismo comportamiento con <canvas>, pero en este caso será preciso detectar si la posición del ratón en x está comprendida entre ciertos valores, e igual para y, y a continuación ejecutar una función. Es, por tanto, posible, pero resulta mucho menos práctico.

Por el contrario, existen muchos elementos que pueden mostrarse rápidamente, como por ejemplo un juego, mediante <canvas>, que será más interesante puesto que está accesible directamente desde la tarjeta gráfica (la GPU: Graphics Processing Unit), que sabe cómo realizar cálculos rápidamente para su representación. Puede consultar...