
今天来讲帧动画。
之前在[Renpy教程] 下雪/下雨/电影特效里有使用到帧动画。当时的代码是这样的:
image rain:
"rain1.png"
0.2
"rain3.png"
0.2
"rain2.png"
0.2
repeat 如果图片是一张一张的,就可以用这种办法来播放。不过如果图片很多的情况,这样播放就非常麻烦,需要写很多行代码。
Renpy提供了另外一种解决方案。就是使用anim.Filmstrip。从官方的cookbook里教程的例子是
init:
image ctc = anim.Filmstrip("sakura.png", (20, 20), (2, 1), .30,
xpos=760, ypos=560, xanchor=0, yanchor=0) 这里来解释下,anim.Filmstrip的参数。
image 图片:用来做帧动画的图片。上面例子是sakura.png
随便在网上找一个例子,大概是类似下面的这样的图片,是一张图片,但是上面其实有好几个动画的过程。

framesize 单个桢图片的尺寸(宽度,高度):上面的代码例子里就是(20,20)
这个也可以计算出来,以上面鸟的图为例子,如果原来的图的尺寸是400, 200,单个图就是100,100. 就是(100,100)
gridsize 格子的尺寸(列,行) 上面的代码例子里就是(2,1)
如果是用黄鸟图做例子就是(4, 2)
delay 延迟时间 两桢之间的时间,这个数字越大播放的越慢。上面的代码例子里就是
frames 帧数
loop 是否循环
image magictest:
anim.Filmstrip("magic.png", (640,480), (5,6), .1, loop=False)
zoom 2
label start():
play music "audio/bgm.ogg"
"这次的演示是播放魔法阵。"
"和之前的帧动画写法不同的是,使用了anim.Filmstrip这个函数。"
"这样就不需要写很多行来播放帧动画。"
"是用下面这样一张图片来播放动画。"
scene black
show magic:
zoom 0.3
pause
hide magic
jump test1
return
label test1():
scene black
python:
renpy.free_memory()
renpy.start_predict_screen( 'test' )
play sound "audio/se.ogg"
show screen test
pause
$ renpy.stop_predict_screen('test')
return
screen test():
add "magictest":
xalign .5 yalign .5
参考:
https://www.renpy.org/wiki/renpy/doc/reference/functions/anim.Filmstrip