Advertisement
jerryjin

spine-events

Oct 6th, 2014
412
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. # 总述(Overview)
  2.  
  3. 事件(Events)用于在播放动画时触发某些事情。例如:角色的脚落地面时播放音效。Events 并不仅限于播放声音,它还可以用于在运行时调用任何你想要的代码。例如:产生粒子特效,打开一扇门,攻击一个敌人,通过代码控制骨骼,等等。
  4.  
  5. # 装配(Setup)
  6.  
  7. 创建 event,在层级树目录中选择 `Events` 节点,然后点击 `New Event` 按钮。
  8.  
  9. ![](/img/events-new.gif)
  10.  
  11. 为 event 输入个有意义的名字并确认后,它就会出现在层级树目录中了。每个 event 拥有3个属性:整型(integer)、浮点型(float)、字符串(string)。
  12.  
  13. ![](/img/events-properties.gif)
  14.  
  15. 这些属性能为指定的 event 提供些额外的信息。可以在装配模式下为它们随意设置默认值。
  16.  
  17. # 事件关键帧(Keying events)
  18.  
  19. 在动画中触发事件。
  20.  
  21. 1. 确保你在动画模式下。
  22. 1. 把时间线移动到你想要的位置。
  23. 1. 按需求在层级目录中设置 event 的属性。
  24. 1. 在层级目录中点击 event 边上的钥匙图标。
  25.  
  26. ![](/img/events-key.gif)
  27.  
  28. 当动画播放或时间线向前划过时,事件将会触发。这时场景中的骨架上方会出现事件名称。
  29.  
  30. # 响应事件(Responding to events)
  31.  
  32. 至于如何设置事件的名称和属性值,完全取决于你想在事件触发时做什么。事件本身并不执行任何操作。您需要自已编写具体的事件响应代码。通常是将回调函数设置在 `AnimationState` 上:
  33. ```
  34. AnimationState state = ...
  35. state.addListener(new AnimationStateAdapter() {
  36. public void event (int trackIndex, Event event) {
  37. // Inspect and respond to the event here.
  38. if (event.name == "footstep")
  39. Audio.play("footstep" + event.intValue + ".wav");
  40. }
  41. });
  42. ```
  43.  
  44. 回调函数也可以设置在一个单独的 `TrackEntry` 上:
  45. ```
  46. TrackEntry entry = state.setAnimation(0, "run", true);
  47. entry.setListener(new AnimationStateAdapter() {
  48. public void event (int trackIndex, Event event) {
  49. // Inspect and respond to the event here.
  50. if (event.name == "audio")
  51. Audio.play(event.stringValue);
  52. }
  53. });
  54. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement