2013-07-14 5 views
6

Sto utilizzando Lingua di elaborazione per disegnare un rettangolo che si ingrandisce di dimensioni con il tempo. Il seguente codice non fornisce alcun output.Uso di ritardo() nell'ambiente di elaborazione

void setup() 
{ 
    size(900,900); 
} 
void draw() 
{ 
    int edge=100; 
    for(int i=0;i<300;i++) 
    { 
     delay(100); 
     edge++;  
     rect(100,100,edge,edge); 
    } 
} 

Sospetto di aver usato in modo errato la funzione delay().

risposta

7

Si consiglia di ruotare il proprio sistema di ritardo utilizzando la funzione millis().

Dai un'occhiata allo this example.

10

Ecco uno di questi metodi di ritardo "roll your own", valido per la maggior parte degli scopi. Basta modificare i valori passati nel metodo di ritardo per modificare i tempi. Ad esempio, restituisce "inizio" e "fine" all'incirca ogni 2 secondi.

void draw() 
{ 
    System.out.println("start"); 
    delay(2000); 
    System.out.println("end"); 
    delay(2000); 
} 

void delay(int delay) 
{ 
    int time = millis(); 
    while(millis() - time <= delay); 
} 
+0

Questo esempio funziona per println(), ma non per il disegno forme: l'intero programma viene ritardato prima che venga disegnato qualsiasi elemento, indipendentemente da dove viene inserito il ritardo nel codice. – Kokodoko

2

Con l'elaborazione, lo schermo non ottiene aggiornato fino a quando il flusso del programma raggiunge la fine del draw()
provare quanto segue:

void setup() 
{ 
    size(900,900); 
    frameRate(10); 
} 
int edge = 100; 
void draw() 
{ 
    edge++;  
    rect(100,100,edge,edge); 
}