我可以让我的代码的一部分在处理中不活跃吗?

时间:2014-11-10 04:43:40

标签: processing

我想在夜空中制造星星。问题在于,由于某种原因,当恒星不停地闪烁并且不会停留在它们所在的位置时。现在,我的代码看起来像这样:

float r1 = 14;
float r2 = 59;
float g1 = 4;
float g2 = 136;
float b1 = 77;
float b2 = 237;
int smX = 350;
int smY = 310;
void setup() {
  size(500, 600);
  smooth();
  noStroke();
}
void draw () {

  //sky&background stuff
  for(float i = 0; i <= 600; i++) {
   float r = lerp(r1, r2, i/600);
   float g = lerp(g1, g2, i/600);
   float b = lerp(b1, b2, i/600);
   stroke(r, g, b);
   line(0, i, width, i);
 }

   for (int s = 0; s < 40; s++) {
   stroke(255);
   float starX = random(0, 500);
   float starY = random(0, 600);
   if (s < 40) {
   line(starX, starY,starX, starY);
   }
}
}

理想情况下,在明星出现之后,我喜欢他们留在原地。任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:1)

您只需将noLoop功能添加到设置方法的末尾即可。

void setup() {
 //rest of your code
 noLoop();
}

这使得Processing不再继续执行draw()内的代码。

答案 1 :(得分:0)

不是每次调用draw()时都重新计算新的随机值,你可以在setup()中只计算一次随机值,然后将它们存储到几个数组中,然后使用draw()绘制星形数组中的值?那样的星星&#39;每次调用draw()时,位置都是相同的。