Spine入门 —— 事件

Spine?

Spine 是一款针对游戏的 2D 骨骼动画编辑工具。 Spine 旨在提供更高效和简洁 的工作流程,以创建游戏所需的动画。

总述(Overview)

事件(Events)用于在播放动画时触发某些事情。例如:角色的脚落地面时播放音效。 Events 并不仅限于播放声音,它还可以用于在运行时调用任何你想要的代码。例如:产生 粒子特效,打开一扇门,攻击一个敌人,通过代码控制骨骼,等等。

装配(Setup)

创建 event,在层级树目录中选择 Events 节点,然后点击 New Event 按钮。

为 event 输入个有意义的名字并确认后,它就会出现在层级树目录中了。每个 event 拥 有 3 个属性:整型(integer)、浮点型(float)、字符串(string)。

这些属性能为指定的 event 提供些额外的信息。可以在装配模式下为它们随意设置默 认值。

事件关键帧(Keying events)

在动画中触发事件。

  1. 确保你在动画模式下。
  2. 把时间线移动到你想要的位置。
  3. 按需求在层级目录中设置 event 的属性。
  4. 在层级目录中点击 event 边上的钥匙图标。

当动画播放或时间线向前划过时,事件将会触发。这时场景中的骨架上方会出现事件名称。

响应事件(Responding to events)

至于如何设置事件的名称和属性值,完全取决于你想在事件触发时做什么。事件本身并 不执行任何操作。您需要自已编写具体的事件响应代码。通常是将回调函数设置在 AnimationState 上:

AnimationState state = ... 
state.addListener(new AnimationStateAdapter() {
    public void event (int trackIndex, Event event) {
     // Inspect and respond to the event here.
    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) { 
    // Inspect and respond to the event here.
    if (event.name == "audio")
        Audio.play(event.stringValue);
     } 
    });

标签: spine

?>