处理循环,毫秒和随机

时间:2012-04-19 15:58:17

标签: loops random progress-bar processing

我想在处理中绘制一个从白色到黑色的进度条,并在每次运行程序时在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);
  }
}

3 个答案:

答案 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