我正在尝试使用 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/