float x = 0;
void setup() {
size(200,200);
frameRate(60);
background(255);
}
int v = (int)random(0,width);
int b = (int)random(0,height);
void draw() {
drawCar(v,b,50,0);
secondDelay(5);
v = (int)random(0,width);
b = (int)random(0,height);
}
void drawCar(int x, int y, int thesize, int col) {
int offset = thesize/4;
//draw main car body
rectMode (CENTER);
stroke(200);
fill(col);
rect(x,y,thesize, thesize/2);
//draw wheel relative to car body center
fill(0);
rect(x-offset,y-offset,offset,offset/2);
rect(x+offset,y-offset,offset,offset/2);
rect(x+offset,y+offset,offset,offset/2);
rect(x-offset,y+offset,offset,offset/2);
}
void secondDelay(int aSecond){
int aS;
aS = aSecond * 60;
while(aS > 0) {
aS--;
}
}
я пытаюсь заставить функцию secondDelay()
работать как способ задержки функции draw
(которая является циклом, который обновляет каждый кадр).также сама frameRate равна 60, так что draw()
работает на 60 кадрах в секунду.Это сделано, давая количество секунд, которое я хочу в качестве аргумента secondDelay(amountofseconds)
.затем внутри этой функции secondDelay()
она умножает количество секунд на количество кадров в секунду, которое составляет 60. Теперь у меня есть количество кадров, которое мне нужно ждать, которое я помещаю в переменную с именем aS
.То, что я делаю затем внутри функции secondDelay()
, это создаю цикл while, который запускается каждый раз, когда он видит, что переменная aS
больше 0. Затем я просто вычитаю 1 из aS
каждый раз, когда она повторяется, пока она не станет больше, чем0. Это когда количество секунд, которое вы хотели отложить, было отложено, а затем он снова выполняет весь цикл draw()
.
Вот как я объясняю код, который я сделал, но он не работает,Вместо этого он просто действует так, будто secondDelay(5);
не существует, поэтому он просто создает новые машины в каждом кадре.Как мне исправить это?