java - 处理:尝试使用图像数组创建定格动画

标签 java processing loadimage

我正在尝试使用 19 个图像在处理过程中创建定格动画。它显示的唯一图像是数组中的最后一个图像,然后我认为这一定是因为它会在一秒钟内加载所有 19 个图像的帧速率,所以我尝试将帧速率设置为“1”,但没有成功。然后我添加了一个 if 语句来告诉计数器重新开始并重复动画。非常感谢任何帮助。

PImage[] images = new PImage[20];

void setup() {
  size(280, 120);

  for ( int i = 0; i < images.length; i++ )
  {
    images[i] = loadImage(i + ".jpg" );
  }
}

void draw() {
  frameRate(1);
  for (int i = 0; i < images.length; i++)
  {
    image(images[i], 0, 0);
    if (i == images.length-1) {
      i = 0;
    }
  }
}

最佳答案

处理中draw()frameRate() 中指定的帧速率调用调用,只需要在你的 setup() 中调用一次方法。在您的代码中,来自 i=0整个循环images.length 完整在每次绘制调用中运行。因此,您只能看到每draw()之后的最后一张图像。 .

相反,在绘制方法之外为要显示的图像编号创建一个全局变量,并在绘制方法中递增它,如下所示:

PImage[] images = new PImage[20];
int frameNum = 0;

void setup() {
    size(280, 120);

    for ( int i = 0; i < images.length; i++ ) {
        images[i] = loadImage(i + ".jpg" );
    }

    frameRate(30);
}

void draw() {

    frameNum++;
    frameNum %= images.length;    
    image(images[frameNum], 0, 0);
}

说明

  • 首次运行处理草图时,int frameNum设置为 0。
  • draw()每帧调用一次,每次调用时我们都会递增 frameNum .
  • 然后我们确保 frameNum当 > images.length 时设置为 0与 frameNum %= images.length

关于java - 处理:尝试使用图像数组创建定格动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27368365/

相关文章:

java - Jetty vs CXF/选择哪一个?

java - 向鼠标移动一个点

java - 如何避免鼠标焦点的字段故障

delphi - 如何在运行时将 48x48 .ico 加载到图像列表中并保持透明度

javascript - 在处理中通过字符串将图像加载到 Canvas

java - 是否可以从另一个调用一个 jax-rs 方法?

java - 订阅可连接的热源时发生 CancellationException

sdwebimage - 是否可以在通过 SDWebImage 缓存图像之前编辑图像的 url?

java - Android - junit - 单元测试 - 带时区的 SimpleDateFormat

java - (处理)如何根据屏幕的XY轴移动3D对象,而不是世界的X,Y,Z(PeasyCam)