如何为我的draw()函数设置线动画?

时间:2019-01-12 18:25:06

标签: processing

我正在使用Processing创建一个学习体验项目,该项目允许用户将网络组件结合在一起。我有使用标准线路的链接,但是如果存在有效的连接,我希望能够显示信号在线路中移动。例如,将该线视为网络电缆。无论如何,我可以为该行设置动画吗?

  void draw(){
   pushStyle();
   stroke(0);
   line(from.x, from.y, to.x, to.y);
   popStyle();
 }
} //draw function in the 'link' file

1 个答案:

答案 0 :(得分:1)

当然可以,但是您的问题有点宽泛。您确实有特定类型的动画吗?无限的可能性;)

处理此类问题的基本方法是每帧增加一些动画变量(或使用时间管理-尽管这超出了基础)。
因为动画变量(例如位置或颜色)每帧都会更改,所以动画每帧都不同。它是动画的。

下面我举一个绿色的小线穿过黑色“连接”线的示例。如果您通读了代码,我想您会发现的。应该将其合并到一个不错的“连接”类中,以便更大规模地使用。

//set coordinates for connection-line
int fromX = 100;
int toX = 600;
int fromY = 100;
int toY = 200;
//copy start coordinate for animation
int animx = fromX;
int animy = fromY;
//determine animation stepsize
int stepX = (toX-fromX)/10;
int stepY = (toY-fromY)/10;

void setup() {
  size(800, 300);
  //set framerate so animation is not to fast
  frameRate(5);
  //draw thick lines
  strokeWeight(10);
}

void draw() {
  background(255);
  // draw connection in black
  stroke(0);
  line(fromX, fromY, toX, toY);
  //draw animation in green
  stroke(0, 255, 0);
  line(animx, animy, animx+stepX, animy+stepY);
  // step animation for next frame
  animx = animx+stepX;
  animy = animy+stepY;
  // check for reset (if the animation on the next frame is drawn outside the line)
  if (animx+stepX > toX)
  {
    animx = fromX;
  }
  if (animy+stepY > toY)
  {
    animy = fromY;
  }
}