2. HTML5: Elemento CANVAS
El canvas es un lienzo, donde podemo pintar usando
javascript
Esto nos permite hacer imágenes dinámicas, como en flash
pero sin plugins externos
Se debe proporcionar contenido alternativo para cuando el
elemento no este soportado, por ejemplo, una imágen
estática equivalente
3. Compatibilidad de CANVAS
Desarrollado inicialmente por Apple para Safari
Estandarizado por WAHTWG para HTML5
Adoptado por Firefox y Opera
Chrome usa el motor de Safari, por lo que funciona
igualmente
No funciona en IE8 aunque hay plugins para meterlo
4. Ejemplo de Uso
<canvas id="micanvas" width="200" height="100">
Este texto se muestra para los navegadores no compatibles con
canvas.
<br />
Por favor, utiliza Firefox, Chrome, Safari u Opera.
</canvas>
//Recibimos el elemento canvas
var canvas = document.getElementById('micanvas');
//Accedo al contexto de '2d' de este canvas, necesario para dibujar
var contexto = canvas.getContext('2d');
//Dibujo en el contexto del canvas
contexto.fillRect(50, 0, 10, 150);
16. Problema de todo esto
Que es un coñazo hacer
cosas medio complejas
17. Processing JS
The Processing language was created by Ben Fry and Casey Reas. It evolved
from ideas explored in the Aesthetics and Computation Group at the MIT
Media Lab and was originally intended to be used in a Java run-time
environment. In the Summer of 2008, John Resig ( inventor of jQuery ),
ported the 2D context of Processing to Javascript for use in web pages. Much
like the native language, Processing.js is a community driven project, and
continues to grow as browser technology advances.
Basicamente que se crea en el MIT y el inventor del JQuery lo porta a
Javascript.
18. Como funciona processing
Función setup: Donde se definen las propiedades del canvas
Función draw: Donde se dibuja, es un loop
Otras funciones para añadir interactividad: mouseMoved,
MousePressed...
19. Ejemplo con processing
// Global variables // Setup the Processing Canvas // Main draw loop
float radius = 50.0; void setup(){ void draw(){
int X, Y; size( 200, 200 ); radius = radius + sin( frameCount / 4 );
int nX, nY; strokeWeight( 10 ); // Track circle to new destination
int delay = 16; frameRate( 15 ); X+=(nX-X)/delay;
X = width / 2; Y+=(nY-Y)/delay;
Y = height / 2; // Fill canvas grey
nX = X; background( 100 );
nY = Y; // Set fill-color to blue
} fill( 0, 121, 184 );
// Set circle's next destination // Set stroke-color white
void mouseMoved(){ stroke(255);
nX = mouseX; // Draw circle
nY = mouseY; ellipse( X, Y, radius, radius );
} }