Una opción simple es hacer un seguimiento del tiempo manualmente usando millis().
Se podría utilizar dos variables:
- uno para almacenar el tiempo transcurrido
- uno para almacenar el tiempo de espera/retardo que necesita
En el método draw() le comprobar si la diferencia entre el tiempo actual (en milisegundos) y el tiempo previamente almacenado es mayor (o igual) al retardo.
Si es así, esto sería el que eres señal para hacer lo que el retraso dado y actualizar la hora almacenada:
int time;
int wait = 1000;
void setup(){
time = millis();//store the current time
}
void draw(){
//check the difference between now and the previously stored time is greater than the wait interval
if(millis() - time >= wait){
println("tick");//if it is, do something
time = millis();//also update the stored time
}
}
Aquí hay una ligera variación de las actualizaciones de una 'aguja' en la pantalla:
int time;
int wait = 1000;
boolean tick;
void setup(){
time = millis();//store the current time
smooth();
strokeWeight(3);
}
void draw(){
//check the difference between now and the previously stored time is greater than the wait interval
if(millis() - time >= wait){
tick = !tick;//if it is, do something
time = millis();//also update the stored time
}
//draw a visual cue
background(255);
line(50,10,tick ? 10 : 90,90);
}
Dependiendo de su configuración/necesidades, puede elegir envolver algo como esto en una clase que pueda reutilizarse. Este es un enfoque básico y debería funcionar también con las versiones de Android y JavaScript (aunque en javascript tienes setInterval()).
Si le interesa usar las utilidades de Java, como FrankieTheKneeMan sugirió, hay una clase TimerTask disponible y estoy seguro de que hay muchos recursos/ejemplos.
Puede ejecutar una demostración abajo:
var time;
var wait = 1000;
var tick = false;
function setup(){
time = millis();//store the current time
smooth();
strokeWeight(3);
}
function draw(){
//check the difference between now and the previously stored time is greater than the wait interval
if(millis() - time >= wait){
tick = !tick;//if it is, do something
time = millis();//also update the stored time
}
//draw a visual cue
background(255);
line(50,10,tick ? 10 : 90,90);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.4.4/p5.min.js"></script>
... ¿Qué idioma? – FrankieTheKneeMan
Estoy usando procesamiento (Java) – D34thSt4lker