0

我想在每次运行程序时绘制一个从白色到黑色的处理进度条,并在 2 t0 8 秒内完成。确切的时间应该是随机的,但在 2 到 8 秒之内。

我已经运行了条形图,每次运行程序时,我都需要帮助以使条形图在 2 到 8 秒之间的随机时间完成。我完全迷失了,因为这是一个 uni 任务,我只是在寻找 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);
  }
}
4

3 回答 3

1

你可以Timer为此设置一个

一个关于定时器和调度的小教程

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

Timer 为 RemindTask 安排时间,当时间到时,调用 RemindTask 中的 run() 方法。

于 2012-04-19T16:01:18.440 回答
1

不是k每帧增加一,而是在 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...
}
于 2021-04-27T04:27:23.287 回答
0

一个可以使用frameRate(your_number_here);

它会减慢主处理“绘制”循环,如此处所述:https ://processing.org/reference/frameRate_.html

于 2017-04-17T01:33:37.217 回答