【问题标题】:animation of vertical bars using processing使用处理的垂直条动画
【发布时间】:2016-02-19 01:58:25
【问题描述】:

我基本上是在尝试在屏幕上制作垂直条的动画,它应该是等距的并一直持续到按下某个键等。在 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; 
  }

}

【问题讨论】:

  • 如果你让你的代码示例自包含,这样人们可以剪切 N 粘贴它来执行,人们往往会提供更多帮助

标签: animation automation processing


【解决方案1】:

听起来您正在寻找一个数组

数组就像一个变量,只是它的索引中可以保存多个值。然后,您可以使用 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找到。

【讨论】:

  • 嗨!这就是我想要的,非常感谢。但是我怎么知道给定屏幕需要多少行阵列。此外,如果我更改线宽和条之间的空间,条/线应该相应地填充整个屏幕。此外,当条形图离开屏幕时,它们会突然离开。他们应该逐渐离开。我尝试修改您提供的部分代码,但无法进行这些更改。此外,浮点变量数组最多可以包含 100 个元素,如果条的厚度非常小,这可能会出现问题。它应该用改变条宽来填满屏幕
  • @jenns 有很多问题。您最好尝试一些东西并将更新的代码发布在一个新问题中。但基本上,你必须做一些基本的数学运算才能确定你想要多少行。试着用一张纸和一支铅笔画一幅画来识别图案。这些条离开屏幕是因为当它们的左侧离开屏幕时您会移动它们。尝试仅在它们的右侧离开屏幕时移动它们。浮点数组可以包含多于 100 个的元素。如果要更改宽度,则可能需要创建一个 Line 对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
相关资源
最近更新 更多