我应该如何获得一个相连的圆阵列(如蠕虫)在画布上直线移动?

时间:2018-11-11 19:56:29

标签: arrays animation processing

void setup(){
  size(800,800);
  background(0);
}

void draw() {
  int[]x= {20,40,60,80,100,120};
  fill (255,0,00);
  for (int i = 0; i <x.length; i ++){
    ellipse (i*6, 100,10,10);
  }
}

我试图使“蠕虫”在画布上沿直线水平移动。附带的是“蠕虫”。我不知道从哪里开始,因为我需要立即移动整个数组。谢谢!

2 个答案:

答案 0 :(得分:1)

将蠕虫的当前位置存储在全局数组中,其中头部为第一个位置。

cordova run ios --device

通过蠕虫的两个部分之间的距离更改每个帧中的位置。循环移动数组中的当前位置:

int[] x= {30,24,18,12,6,0};
int step = 6;

在蠕虫的头部,如果到达窗口的结尾或窗口的开头,请更改方向:

draw() {

    .....
    for (int i = x.length-1; i > 0; --i ){
        x[i] = x[i-1];
    }
    x[0] += step;
    .....
}

以相反的顺序绘制蠕虫:

if ( x[0] >= width || x[0] < 0)
        step *= -1;

完整代码如下:

for (int i = x.length-1; i >= 0; --i ){
    ellipse(x[i], 100, 10, 10);
}

查看预览:

答案 1 :(得分:0)

移动值数组与移动单个值没什么不同。

让我们看看如何移动单个值:

float x = 0;

void draw(){
  background(0);
  ellipse(x, height/2, 20, 20);

  x++;
}

要移动值数组,您将执行相同的操作,但要对数组的每个索引进行操作。像这样:

float[] xArray = {20, 40, 60};

void draw(){
  background(0);

  for(int i = 0; i < xArray.length; i++){
    ellipse(xArray[i], height/2, 20, 20);
    xArray[i]++;
  }
}

无耻的自我促进:here是有关Processing中动画的教程,{{3}}是有关Processing中数组的教程。