动画


这一次给各位介绍的是BKE的动画类,它包含了 animateactiontrans 。三者都是在BKE中制作动画时必不可缺的组成部分。 虽然实际说来三者其实是不同的三个类,不过考虑到功能划分,我们这一次就先对 animate 类先进行说明。

animate

顾名思义,animate 命令常被用于创建逐帧动画时使用,您可以利用此命令来创建一个循环播放的动画。

其命令格式如下:

animate *mode
动画系命令关键字。

mode
接下来执行动画命令的类型。

animate 命令有6种不同的模式(mode关键字),它们分别是:

horizontal vertical multfiles start cell stop

对于不同的 modeanimate 命令有不同的参数,这里就向大家顺序介绍一下:

animate mode=”horizontal” index file frame interval loop
动画系命令,模式为剪裁方式(动画帧水平排列)。

index
创建的动画的编号(和精灵共用一个编号集合)。
file
读取的文件。
frame
动画的帧数。
interval
每帧的间隔,默认为33(30fps)。
loop
动画循环模式,值有 “none”(不循环),”forword”(单向循环),”bouncing”(布朗斯循环)。


animate mode=”vertical” index file frame interval loop
动画系命令,模式为垂直模式(动画帧垂直排列)。

index
创建的动画的编号(和精灵共用一个编号集合)。
file
读取的文件。
frame
动画的帧数。
interval
每帧的间隔,默认为33(30fps)。
loop
动画循环模式,值有 “none”(不循环),”forword”(单向循环),”bouncing”(布朗斯循环)。

+ [不同循环模式的说明](javascript:void(null))

在这里我们准备了两张不同的素材,以分别对应两种不同的剪裁模式:

horizontal

vertical

文件一对应了 horizontal 模式,而文件二对应的则是 vertical 模式。可以直观的看出前者是横向剪裁,后者则是竖向剪裁。

请您先将这两个文件保存下来,在之后的示例中我们将会使用到它。

接下来我们继续介绍剩余的模式:

animate mode=”multifiles” index *file interval loop delay
从多个文件创建一个动画。

index
创建的动画的编号(和精灵共用一个编号集合)。
file
将要添加的文件列表。
interval
每帧的间隔,默认为33(30fps)。
loop
动画是否循环,默认为 false 。
delay
动画每次循环之间的间隔 。


animate mode=”start” index
开始一个动画。

index
欲开始的动画的编号(和精灵共用一个编号集合)。

animate mode=”stop” index
停止一个动画。

index
欲停止的动画的编号(和精灵共用一个编号集合)。


animate mode=”cell” index *frame
切换动画到某一帧(会停止动画)。

index
欲更改的动画的编号(和精灵共用一个编号集合)。
file
欲更改动画到哪一帧。

请注意, `start` 仅仅只能作用于单个精灵,不能传入数组作为参数。

在介绍完 animate 类所有的 mode 之后,让我们来练练手吧!

首先请将下面的图片保存到您的硬盘上:

ch1 ch2 ch3

接着,您可以直接复制下面的代码,保存编译之后运行以查看它的作用,不过我还是推荐您自己先写一遍 :)

*main
@layer index=10 width=800 height=600 color=0xFFFFFF opacity=255
@addto index=10 target=basic_layer
@wait time=1000 canskip=false

@animate mode="horizontal" index=2 file="rakuda-1" frame=4 interval=180 loop="forward"
@addto index=2 target=10 zorder=10 pos=[250,280]
@animate mode="start" index=2
@wait time=1000 canskip=false

@animate mode="vertical" index=3 file="rakuda-3" frame=4 interval=360 loop="forward"
@addto index=3 target=10 zorder=10 pos=[350,280]
@animate mode="start" index=3
@wait time=1000 canskip=false

@animate mode="multifiles" index=4 file=["ch-1","ch-2","ch-3"] interval=360 loop="true" delay=500
@addto index=4 target=10 zorder=10 pos=[400,280]
@animate mode="start" index=4
@wait time=2000 canskip=false

@animate mode="stop" index=2
@animate mode="cell" index=3 frame=2

首先,我们使用两张连续的图片创建了两个动画,分别对应的是横向剪裁模式与竖向剪裁模式。在每一次创建结束后,我们都使用了 start 模式来开始对应的动画,如果我们不使用 start 命令,对应的动画则不会开始播放,请注意。

接下来我们使用了 muiltfiles 模式,以三张独立的图片创建了一个动画。这里需要说明的是,在 muiltfiles 模式中, interval 这个参数负责控制帧与帧之间的间隔时间,而 delay 参数则用于控制每次循环与循环之间的间隔时间。您可以自行修改 delay 的大小来体会。

在最后两行命令中,我们停止了编号为2的动画文件的播放,使编号为3的动画切换到了第2帧(注意,这样做会停止动画的播放)。

以上就是 animate 类的所有命令了,怎么样,是不是觉得很简单呢?

animate 类的用处很广泛,您可以使用动画文件来创建一个动态的按钮,或者是在画面上循环一段动画,加强您游戏的演出效果等,甚至您还可以使用它来制作RPG类游戏的NPC!