[Обработка / Java] Видимость / Расслоение Проблема - PullRequest
0 голосов
/ 16 января 2011

Я работаю над небольшим эскизом в процессе обработки, где я делаю «часы», используя функции времени и рисуя эллипсы по холсту на основе миллисекунд, секунд и минут. Я использую цикл for для рисования всех эллипсов, и каждый цикл for находится внутри своего собственного метода. Я вызываю каждый из этих методов в функции рисования. Однако по какой-то причине рисуется только первый вызываемый метод, хотя в идеале я хотел бы, чтобы все они визуально отображались.

//setup program
void setup() {
  size(800, 600);
  frameRate(30);
  background(#eeeeee);
  smooth();
}

void draw(){
  milliParticles();
  secParticles();  
  minParticles();
}

//time based particles
void milliParticles(){
  for(int i = int(millis()); i >= 0; i++) {
      ellipse(random(800), random(600), 5, 5 );
      fill(255);    
  }
}

void secParticles() {
  for(int i = int(second()); i >= 0; i++) {
      fill(0);    
      ellipse(random(800), random(600), 10, 10 );
  }
}

void minParticles(){
  for(int i = int(minute()); i >= 0; i++) {
      fill(50);
      ellipse(random(800), random(600), 20, 20 );
  }
}

1 Ответ

2 голосов
/ 16 января 2011

Ваш первый метод - единственный, который выполняется, потому что условие, которое должно быть ложным, чтобы ваш цикл for был остановлен, всегда истинно (я всегда буду> = 0, если вы добавляете 1 к нему каждый раз, когда выполняете цикл).

Я думаю, что вы хотите изменить свои циклы for следующим образом:

for(int i = int(second()); i >= 0; i--) {

Таким образом, я изначально буду 0-59, и будет уменьшаться до -1, и в этот моментя> = 0 будет ложным.Затем выполнение завершит цикл for и перейдет к следующему методу.

Я думаю, что это было ваше первоначальное намерение, если только вы не хотите, чтобы каждый метод выполнялся одновременно и бесконечно (в этом случае вам следует использовать потоки).

...