Spine 事件

Spine 事件

大家好,我是笨笨,笨笨的笨,笨笨的笨,谢谢!
欢迎加入专业Spine技术交流群 Spine2D骨骼动画 7708065
此文最初发表在群论坛,但后来腾讯放弃了群论坛所以迁至此处
转载请保留原始链接:https://blog.csdn.net/jx520/article/details/83050396

事件是动画过程中所发生情况的触发器。例如,当人物碰到地面发出声音。事件不限于音频,它们可用于在运行时运行任何所需代码。例如,通过代码产生粒子效果、开门、打击敌人、操纵骨架等等。

设置

通过选择层级树中的 事件 节点并单击 新建事件 以创建事件。
在这里插入图片描述
一旦赋予事件有意义的名称后,它就会显示在层级树中。事件有三种类型属性:整型、浮点型和字符串型。
在这里插入图片描述
使用这些属性可以为事件指定额外信息。在设置模式下,可以选择为这些属性赋予默认值。

创建关键帧

要在动画过程中触发事件:
1.确保处于动画模式。 1.将时间轴移动到所需位置。 1.可以在层级树中设置事件属性。 1.在层级树中单击事件旁的关键帧按钮。
在这里插入图片描述
当播放动画或时间轴向前擦除,事件将会触发。编辑区骨架上方显示的事件名称会对此进行提示。

响应事件

如何设置事件名称和值完全取决于您,这就像事件触发后会发生的情况一样。实际上事件本身不会执行任何操作。您需要在应用程序中编写事件发生后所触发的内容并采取相应操作的代码。实际上这是通过设置对 AnimationState 的调用完成的:

AnimationState state = ...
state.addListener(new AnimationStateAdapter() {
   public void event (int trackIndex, Event event) {
      // 此处检查并响应事件。
      if (event.name == "footstep")
         Audio.play("footstep" + event.intValue + ".wav");
   }
});

还可以对单个 TrackEntry 设置调用:

TrackEntry entry = state.setAnimation(0, "run", true);
entry.setListener(new AnimationStateAdapter() {
   public void event (int trackIndex, Event event) {
      // 此处检查并响应事件。
      if (event.name == "audio")
         Audio.play(event.stringValue);
   }
});