停止并重新开始处理中闪烁的颜色

时间:2014-04-06 12:23:26

标签: java processing

我有以下代码闪烁红色和白色的颜色。我想做出改变,但我不知道该怎么做。闪烁时,两种颜色停止3秒后再次开始。

float delay = 1; // 1 frame

void setup() {
  size(200, 200);
}

void draw() { 
  background(96);
  fill(255);
  if(frameCount%(2*delay)<delay) fill(255, 0, 0);
  rect(20, 20, 100, 100);
}

3 个答案:

答案 0 :(得分:2)

方法1

正如The Hat with The Hat建议的那样,只有当frameCount%360&lt; 180

方法2

使用计时器:

float delay = 1; // 1 frame
long n;

void setup() {
  size(200, 200);
  n = millis();
}

void draw() { 
  background(96);
  fill(255);
  if (frameCount%(2*delay)<delay) {
    fill(255, 0, 0);
  }
  if (millis() - n < 3000) // If 3 seconds haven't yet passed, show the rectangle
  {  
    rect(20, 20, 100, 100);
  }
  else if (millis() - n > 6000) // If 6 seconds have passed, reset timer
  {
    n = millis();
  }
}

答案 1 :(得分:1)

如果frameCount % 360小于180,我会做的只是绘制矩形:

float delay = 1; // 1 frame

void setup() {
  size(200, 200);
}

void draw() { 
  background(96);
  fill(255);
  if(frameCount % (2 * delay) < delay) {
    fill(255, 0, 0);
  }
  if(frameCount % 360 < 180) {
    rect(20, 20, 100, 100);
  }
}

答案 2 :(得分:1)

更简洁的计时器版本(使用frameCount进行计时通常是一个坏主意):

void setup() {
  size(200, 200);
}

void draw() { 
  background(96);
  fill(255);
  if (millis()/1000%6<3 && frameCount%2<1)
    fill(255, 0, 0);
  rect(20, 20, 100, 100);
}