使用处理的竖条动画

时间:2016-02-19 01:58:26

标签: animation automation processing

我基本上试图在屏幕上制作一个垂直条的动画,它应该是等间距的,并继续直到某个键被按下等等。在processing.org动画工具中。 我能够获得一种动画,但是使用硬编码值并且必须反复编写相同的代码以生成整个帧/屏幕的条形动画。我需要使它成为通用的,这样改变屏幕宽度或条形的大小不会让我改变整个代码而只是改变控制参数的变量。以下是我的代码。我已经编写了三个垂直条的代码,但需要在整个屏幕上完成..

 
int a;
int i;
int j;

void setup() {
  size(640, 360);
  a = width/2;
  i = 0;

}

void draw() {
  background(51);

  //need to avoid these repetitions each time for each bar

  rect(a , 0, 25, width);  
  a = a - 1;
  if (a < 0) { 
   a = width; 
  }

  rect(i= a+50, 0, 25, width);  
  i = i - 1;
  if (i < 0) { 
   i = width + a; 
  }


  rect(j = i + 50, 0, 25, width);  
  j = j - 1;
  if (a < 0) { 
   j = width + i; 
  }

}

1 个答案:

答案 0 :(得分:0)

听起来你正在寻找数组

数组就像一个变量,只能在索引中保存多个值。然后,您可以使用 for循环来迭代数组,并根据数组中的值执行操作。

这是一个使用数组来跟踪行位置的示例:

 
float[] linePositions = new float[10];
float lineWidth = 25;
float lineSpacing = 25;
float lineSpeed = 1;

void setup() {
  size(640, 360);

  for (int i = 0; i < linePositions.length; i++) {
    linePositions[i] = width/2 + (lineWidth+lineSpacing)*i;
  }
}

void draw() {
  background(51);

  //loop through the lines
  for (int i = 0; i < linePositions.length; i++) {

    //draw the line
    rect(linePositions[i], 0, lineWidth, width); 

    //move the line
    linePositions[i] -= lineSpeed;

    //wrap the line
    if ( linePositions[i] < 0) { 
      linePositions[i] = width;
    }
  }
}

有关数组的更多信息,请参见the Processing reference