En programación es imprescindible muchas veces el controlar cada cuánto tiempo se lanzan eventos o acciones. Para ello Processing utiliza una función que se llama:
millis()
Esta función devuelve el tiempo que ha transcurrido desde que se lanza el programa y lo da expresado en milisegundos. De esta manera, si invocamos a esta función dos veces separadas en el tiempo y restamos esos valores, obtendremos el tiempo transcurrido entre esos dos eventos.
Por hacer un simil, es igual a como trabajan los contadores de la electricidad que llega a nuestras viviendas. El contador empezó a contar cuando lo instalaron por primera vez, pero las lecturas de cada factura se hacen restando la lectura actual y la del último mes (de esa manera se calcula lo consumido ese último mes).
Veamos un ejemplo para entenderlo mejor:
//Se declara una variable que almacenará el tiempo actual (real) transcurrido
//desde que se activa el programa.
long tiempo = 0;
//desde que se activa el programa.
long tiempo = 0;
//Se declara una variable que almacenará el último valor de tiempo en el que se
//ejecutó la instrucción (delay).
long t_actualizado = 0;
//ejecutó la instrucción (delay).
long t_actualizado = 0;
//Se declara una variable que almacenará el tiempo que se desea que dure el retardo.
long t_retardo = 500; // retardo de medio segundo
long t_retardo = 500; // retardo de medio segundo
void setup()
{
size(600,600);
background(0,0,0);
}
{
size(600,600);
background(0,0,0);
}
void draw()
{
float ancho = random(100);
//Se almacena el tiempo que ha transcurrido desde que se activó el programa.
tiempo = millis();
{
float ancho = random(100);
//Se almacena el tiempo que ha transcurrido desde que se activó el programa.
tiempo = millis();
if( tiempo > t_actualizado + t_retardo)
{
fill(random(255),random(255),random(255));
ellipse(random(500),random(500),ancho,ancho);
//Se actualiza el tiempo que ha de transcurrir para el próximo delay.
t_actualizado = tiempo;
{
fill(random(255),random(255),random(255));
ellipse(random(500),random(500),ancho,ancho);
//Se actualiza el tiempo que ha de transcurrir para el próximo delay.
t_actualizado = tiempo;
}
}
}
Vemos cómo van apareciendo circulos de ancho, posición, y color aleatorio cada medio segundo (500 ms):
Probad a modificar el valor de la variable que fija el retardo (t_retardo) y observar cómo la animación se acelera o se ralentiza.
Ejecución con un retardo de 100 ms:
Ejecución con un retardo de 1000 ms (1 segundo):
TAREAS
1.Realizar un programa que simule el movimiento indefinido de un círculo de derecha a izquierda como la característica animación de luces del “Coche Fantástico”:
No hay comentarios:
Publicar un comentario