我想在处理中绘制一个从白色到黑色的进度条,并在每次运行程序时在2到8秒内完成。确切的时间应该是随机的,但在2到8秒内。
我已经有了运行的栏,我需要帮助,每次运行程序时,在2到8秒的随机时间内完成栏。我完全失去了,因为这是一个单一的任务,我只是寻找psedocode让我开始。到目前为止我有这个
int a;
int k;
int strokeC;
boolean bar=true;
void setup (){
size(500,300);
background(255);
colorMode(RGB,255);
a = 130;
k= a;
strokeC = 255;
rectMode(CENTER);
noFill();
rect(width/2,height/2,250,30);
}
void draw(){
k++;
for(int i=a, s=strokeC; i<=k && s>15; i++, s-- ) {
stroke(s);
line(i,140,i,160);
}
}
答案 0 :(得分:1)
您可以为此设置Timer
There是一个关于计时器和日程安排的小教程
import java.util.Timer;
import java.util.TimerTask;
public class Reminder {
Timer timer;
public Reminder(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(), seconds*1000);
}
class RemindTask extends TimerTask {
public void run() {
System.out.println("Time's up!\n");
timer.cancel(); //Terminate the timer thread
}
}
public static void main(String args[]) {
int random_num = Random.nextInt(7)+2; // Random num between 2-8; Random.nextInt(7) is from interval <0;7)
new Reminder(random_num );
System.out.println("Task scheduled.\n");
}
}
计时器调度RemindTask的时间量,当时间到了,调用RemindTask中的run()方法。
答案 1 :(得分:1)
不是每帧将 k
增加 1,而是在 2 到 8 秒之间随机抽取时间并将 k
设置为每帧适当的数量。
//your global variables...
int loadTime, startTime, endTime, barStart, barEnd;
void setup() {
//your setup stuff...
loadTime = random(2000, 8000);
barStart = 130;
barEnd = width - 130;
}
void draw() {
if (frameCount == 1) {
startTime = millis();
endTime = startTime + loadTime;
}
k = map(millis, startTime, endTime, barStart, barEnd);
//your for loop...
}
答案 2 :(得分:0)
可以使用frameRate(your_number_here);
它会减慢主要处理过程中的速度。循环,如下所示:https://processing.org/reference/frameRate_.html