使用 Animation 类中的 addLabel 函数,给动画的某一帧添加一个 标签label,然后监听Laya.Event.LABEL 事件即可。
在场景下添加一个做好的动画,但不要设置默认自动播放,不然动画将不监听Label事件,
然后给场景挂载如下脚本。
示例如下:
export default class AniEventScript extends Laya.Script {
private ani:Laya.Animation;
onAwake(): void {
this.ani = this.owner.getChildByName("ani") as Laya.Animation;
this.ani.addLabel("testAni", 2); // 2帧后执行某个事件
this.ani.on(Laya.Event.LABEL, this, this.onAniEvent);
this.ani.on(Laya.Event.COMPLETE, this, () => {
console.log("complete");
});
this.ani.play(0, false);
}
onAniEvent(e) {
console.log(e);
console.log(1234);
}
}
在代码中我给这个帧动画的第2帧添加了一个“testAni”事件,并在onAniEvent函数中执行对应行为。大家可以将事件参数e打印出来,在上面的例子中e的类型是string,这是因为我使用的是laya原生的动画,当我们使用spine动画时,参数e的类型为Laya.EventData,大家要注意。不管是哪种类型,我们都可以通过e的不同来区别不同帧要处理的事件行为。
参考:LAYA_DEMO