Beruflich Dokumente
Kultur Dokumente
Funcin draw()
Los programas que se ejecutan de forma continua deben incluir una funcin llamada draw().
voiddraw(){
instrucciones
}
El cdigo incluido en el bloque de la funcin draw() se ejecuta en forma de bucle hasta que el
usuario presione el botn de detencin o cierre la ventana de visualizacin.
Un programa puede tener un nico bloque draw().
Cada vez que el bloque draw() finaliza, dibuja un nuevo fotograma (frame) y comienza
nuevamente el cdigo del bloque desde su primera lnea.
Funcin frameRate()
La funcin frameRate() determina el nmero mximo de fotogramas por segundo que renderizar
el programa siempre y cuando no exceda los valores posibles a realizar por el sistema.
Si utilizamos la variable de sistema frameCount podremos llevar un registro de la cantidad de
cuadros renderizados hasta el momento:
voiddraw(){
frameRate(1);
println(frameCount);
}
Veamos a continuacin ocho ejemplos de cdigo que general algn tipo de animacin.
IntroduccinaProcessingv1.5+
Docente:RalLacabanne
41
Creamos animaciones cuando cambiamos atributos visuales de un cuadro al otro:
floaty=0.0;
voiddraw(){
frameRate(30);
line(0,y,100,y);
y=y+0.5;
}
Debemos observar que la variable se define por fuera del bloque draw(). Qu hubiera pasado si la
incluamos dentro?
voiddraw(){
frameRate(30);
floaty=0.0;
line(0,y,100,y);
y=y+0.5;
}
Para que tengamos una animacin la variable y debe ser declarada fuera del bloque, ya que de lo
contrario esta se redefinira y reasignara al mismo valor cada vez que se vuelve a iniciar el bucle.
Como podemos observar, el fondo del lienzo va cambiando de color de acuerdo a cada nueva lnea
que aparece. Si deseamos poder ver el avance de la lnea sobre el fondo, debemos refrescar el
fondo cada vez que reiniciemos el draw() mediante la funcin background().
floaty=0.0;
voiddraw(){
frameRate(30);
background(204);
line(0,y,100,y);
y=y+0.5;
}
IntroduccinaProcessingv1.5+
Docente:RalLacabanne
42
Y si incorporamos una pequea estructura de condicional generamos ciclos visibles.
floaty=0.0;
voiddraw(){
frameRate(30);
background(204);
line(0,y,100,y);
y=y+0.5;
if(y>height){
y=0;
}
}
O bien podemos volver a tomar la animacin IV y modificarla para obtener otro resultado visual:
inty=0;
intdireccion=1;
voiddraw(){
frameRate(30);
background(204);
if(y>100){
direccion=1;
}
if(y<0){
direccion=1;
}
y=y+(1*direccion);
line(0,y,100,y);
}
Esta es otra manera de resolver la animacin anterior. No existen formas fijas de resolver un
problema, por suerte podemos abordar diferentes enfoques para la resolucin del mismo:
inty=0;
intdireccion=1;
voiddraw(){
frameRate(30);
background(204);
if(y>100||y<0){
direccion*=1;
}
y=y+direccion;
line(0,y,100,y);
}
IntroduccinaProcessingv1.5+
Docente:RalLacabanne
43
Lectura recomendada
Ejercicio 11
IntroduccinaProcessingv1.5+
Docente:RalLacabanne