2013-07-14 3 views
6

Я использую Язык программирования для рисования прямоугольника, который растет со временем. Следующий код не дает никакого вывода.Использование задержки() в среде обработки

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

Я подозреваю, что неправильно использовал функцию задержки().

ответ

7

Я рекомендую перевернуть собственную систему задержки с помощью функции millis().

Посмотрите на this example.

10

Вот один из таких способов «бросить свой собственный», который хорош для большинства целей. Просто измените значения, переданные в метод задержки, чтобы изменить время. Это просто выводит «старт» и «конец» примерно каждые 2 секунды, например.

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

Этот пример работает для Println(), но не для рисования формы - вся программа задерживается до того, как что-либо нарисовано - независимо от того, где задержка помещается в код. – Kokodoko

2

При обработке, экран не освежиться, пока поток программа не достигнет конца розыгрыша()
Попробуйте следующее:

void setup() 
{ 
    size(900,900); 
    frameRate(10); 
} 
int edge = 100; 
void draw() 
{ 
    edge++;  
    rect(100,100,edge,edge); 
} 
Смежные вопросы