Skip to content
This repository has been archived by the owner on Jun 22, 2022. It is now read-only.

22.高级动画语法

[email protected] edited this page May 4, 2020 · 2 revisions

高级动画

Emerald提供了更高级的动画,你可以使用它制作应用技能动画或者特效动画。

语法

高级动画需要动画脚本,文件名后缀推荐使用 .emrani

脚本头

脚本头放置在脚本的第一行,用于设置动画的全局设置。

name 动画名称|position 绘图坐标中心|tick 全局动画每帧持续时间

其中,tick是可以省略的。

name 动画名称|position 绘图坐标中心

通道标签

动画具有不同通道,不同通道显示的动画不同。
通道标签用于隔离不同通道的帧动作。

:Channel 通道名称

帧动作

动画每一帧的动作,使用{}包括起来。

{
    ...
}

{}所包括的内容中,第一行表示图片的绘制动作,多个图片可以使用符号|隔开。

{
    图片文件名(缩放比率,不透明度,X,Y)|图片文件名(缩放比率,不透明度,X,Y)|...
}

{}所包括的内容中,第二行表示播放的音效,多个音效可以使用符号|隔开。这一行是可以省略的。

{
    图片文件名(缩放比率,不透明度,X,Y)|图片文件名(缩放比率,不透明度,X,Y)|...
    音效文件名(1)
}

帧动作指令

每一帧动作,在符号{的后方可以加入一些内容,即指令。多个指令可以使用符号|隔开。

发送消息

当动画播放到这一帧时,消息就会被发送,触发页面中的AnimationMsg事件。
发送消息使用msg指令:

{msg "hello"
    ...
}

NOTE:
如果发送的消息为dispose,则消息不会被发送,而是直接销毁该动画。

销毁

当动画播放到这一帧时,动画就会被销毁。
销毁使用dispose指令:

{dispose
    ...
}

可以加上msg指令报告动画已经被销毁:

{msg "die"|dispose
    ...
}

NOTE:
如果整个通道中都没有销毁指令,那么播放到最后一帧时将跳回第一帧。

设置当前帧动作的持续时间

该设置不受全局设置影响。
完成该设置,可以使用tick指令:

{tick 设置该帧持续时间
    ...
}

暂停在当前帧

暂停在当前帧,阻止向下一帧播放,可以使用stay指令:

{stay
    ...
}

使用tick 0指令也可以达到预期效果。

NOTE:
暂停可以阻止播放到最后一帧时将跳回第一帧。

标准动画脚本示例

name 动画名称|position 绘图坐标中心|tick 全局动画持续帧数
:Channel 通道名称
   {tick 设置该帧持续帧数,可选|msg "播放到该帧时发送该消息,可选"
      这一帧要显示的图片(缩放比率,不透明度,X,Y) //必须,多个图片用|隔开
      播放的音效(1) //可选,多个音效用|隔开
   }
   {stay //停留在这一帧
      这一帧要显示的图片(缩放比率,不透明度,X,Y) //必须,多个图片用|隔开
   }
   {dispose //播放到这一帧时销毁动画
      这一帧要显示的图片(缩放比率,不透明度,X,Y) //必须,多个图片用|隔开
   }
:Channel Test2
   {tick 0 //0表示停留在这一帧
      404.png(1,1,0,0)
   }