2013-07-14 3 views
6

Ich verwende Verarbeitungssprache, um ein Rechteck zu skizzieren, das mit der Zeit an Größe zunimmt. Der folgende Code gibt keine Ausgabe.Verwendung von delay() in der Verarbeitungsumgebung

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); 
    } 
} 

Ich nehme an, die zu Unrecht verwendet Verzögerung() Funktion.

Antwort

7

Ich empfehle, Ihr eigenes Verzögerungssystem mit der Funktion millis() zu rollen.

Werfen Sie einen Blick auf this example.

10

Hier ist eine solche "roll your own" Verzögerung Methode, die für die meisten Zwecke gut ist. Ändern Sie einfach die in die Delay-Methode übergebenen Werte, um das Timing zu ändern. Dieser gibt nur etwa alle 2 Sekunden "Start" und "Ende" aus.

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

Dieses Beispiel für println arbeitet(), aber nicht für das Zeichnen Formen - das gesamte Programm wird verzögert, bevor etwas gezeichnet wird - unabhängig davon, wo die Verzögerung im Code liegt. – Kokodoko

2

Mit Verarbeitung, wird der Bildschirm nicht aktualisiert bekommt, bis der Programmablauf das Ende der Auslosung erreicht()
Versuchen Sie Folgendes:

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