EventObject.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. /**
  2. * The MIT License (MIT)
  3. *
  4. * Copyright (c) 2012-2017 DragonBones team and other contributors
  5. *
  6. * Permission is hereby granted, free of charge, to any person obtaining a copy of
  7. * this software and associated documentation files (the "Software"), to deal in
  8. * the Software without restriction, including without limitation the rights to
  9. * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
  10. * the Software, and to permit persons to whom the Software is furnished to do so,
  11. * subject to the following conditions:
  12. *
  13. * The above copyright notice and this permission notice shall be included in all
  14. * copies or substantial portions of the Software.
  15. *
  16. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
  18. * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
  19. * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  20. * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  21. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  22. */
  23. namespace DragonBones
  24. {
  25. /// <summary>
  26. /// - The properties of the object carry basic information about an event,
  27. /// which are passed as parameter or parameter's parameter to event listeners when an event occurs.
  28. /// </summary>
  29. /// <version>DragonBones 4.5</version>
  30. /// <language>en_US</language>
  31. /// <summary>
  32. /// - 事件对象,包含有关事件的基本信息,当发生事件时,该实例将作为参数或参数的参数传递给事件侦听器。
  33. /// </summary>
  34. /// <version>DragonBones 4.5</version>
  35. /// <language>zh_CN</language>
  36. public class EventObject : BaseObject
  37. {
  38. /// <summary>
  39. /// - Animation start play.
  40. /// </summary>
  41. /// <version>DragonBones 4.5</version>
  42. /// <language>en_US</language>
  43. /// <summary>
  44. /// - 动画开始播放。
  45. /// </summary>
  46. /// <version>DragonBones 4.5</version>
  47. /// <language>zh_CN</language>
  48. public const string START = "start";
  49. /// <summary>
  50. /// - Animation loop play complete once.
  51. /// </summary>
  52. /// <version>DragonBones 4.5</version>
  53. /// <language>en_US</language>
  54. /// <summary>
  55. /// - 动画循环播放完成一次。
  56. /// </summary>
  57. /// <version>DragonBones 4.5</version>
  58. /// <language>zh_CN</language>
  59. public const string LOOP_COMPLETE = "loopComplete";
  60. /// <summary>
  61. /// - Animation play complete.
  62. /// </summary>
  63. /// <version>DragonBones 4.5</version>
  64. /// <language>en_US</language>
  65. /// <summary>
  66. /// - 动画播放完成。
  67. /// </summary>
  68. /// <version>DragonBones 4.5</version>
  69. /// <language>zh_CN</language>
  70. public const string COMPLETE = "complete";
  71. /// <summary>
  72. /// - Animation fade in start.
  73. /// </summary>
  74. /// <version>DragonBones 4.5</version>
  75. /// <language>en_US</language>
  76. /// <summary>
  77. /// - 动画淡入开始。
  78. /// </summary>
  79. /// <version>DragonBones 4.5</version>
  80. /// <language>zh_CN</language>
  81. public const string FADE_IN = "fadeIn";
  82. /// <summary>
  83. /// - Animation fade in complete.
  84. /// </summary>
  85. /// <version>DragonBones 4.5</version>
  86. /// <language>en_US</language>
  87. /// <summary>
  88. /// - 动画淡入完成。
  89. /// </summary>
  90. /// <version>DragonBones 4.5</version>
  91. /// <language>zh_CN</language>
  92. public const string FADE_IN_COMPLETE = "fadeInComplete";
  93. /// <summary>
  94. /// - Animation fade out start.
  95. /// </summary>
  96. /// <version>DragonBones 4.5</version>
  97. /// <language>en_US</language>
  98. /// <summary>
  99. /// - 动画淡出开始。
  100. /// </summary>
  101. /// <version>DragonBones 4.5</version>
  102. /// <language>zh_CN</language>
  103. public const string FADE_OUT = "fadeOut";
  104. /// <summary>
  105. /// - Animation fade out complete.
  106. /// </summary>
  107. /// <version>DragonBones 4.5</version>
  108. /// <language>en_US</language>
  109. /// <summary>
  110. /// - 动画淡出完成。
  111. /// </summary>
  112. /// <version>DragonBones 4.5</version>
  113. /// <language>zh_CN</language>
  114. public const string FADE_OUT_COMPLETE = "fadeOutComplete";
  115. /// <summary>
  116. /// - Animation frame event.
  117. /// </summary>
  118. /// <version>DragonBones 4.5</version>
  119. /// <language>en_US</language>
  120. /// <summary>
  121. /// - 动画帧事件。
  122. /// </summary>
  123. /// <version>DragonBones 4.5</version>
  124. /// <language>zh_CN</language>
  125. public const string FRAME_EVENT = "frameEvent";
  126. /// <summary>
  127. /// - Animation frame sound event.
  128. /// </summary>
  129. /// <version>DragonBones 4.5</version>
  130. /// <language>en_US</language>
  131. /// <summary>
  132. /// - 动画帧声音事件。
  133. /// </summary>
  134. /// <version>DragonBones 4.5</version>
  135. /// <language>zh_CN</language>
  136. public const string SOUND_EVENT = "soundEvent";
  137. /// <internal/>
  138. /// <private/>
  139. /// <summary>
  140. /// - The armature that dispatch the event.
  141. /// </summary>
  142. /// <see cref="DragonBones.Armature"/>
  143. /// <version>DragonBones 4.5</version>
  144. /// <language>en_US</language>
  145. /// <summary>
  146. /// - 发出该事件的骨架。
  147. /// </summary>
  148. /// <see cref="DragonBones.Armature"/>
  149. /// <version>DragonBones 4.5</version>
  150. /// <language>zh_CN</language>
  151. /// <summary>
  152. /// - The custom data.
  153. /// </summary>
  154. /// <see cref="DragonBones.CustomData"/>
  155. /// <private/>
  156. /// <version>DragonBones 5.0</version>
  157. /// <language>en_US</language>
  158. /// <summary>
  159. /// - 自定义数据。
  160. /// </summary>
  161. /// <see cref="DragonBones.CustomData"/>
  162. /// <private/>
  163. /// <version>DragonBones 5.0</version>
  164. /// <language>zh_CN</language>
  165. public static void ActionDataToInstance(ActionData data, EventObject instance, Armature armature)
  166. {
  167. if (data.type == ActionType.Play)
  168. {
  169. instance.type = EventObject.FRAME_EVENT;
  170. }
  171. else
  172. {
  173. instance.type = data.type == ActionType.Frame ? EventObject.FRAME_EVENT : EventObject.SOUND_EVENT;
  174. }
  175. instance.name = data.name;
  176. instance.armature = armature;
  177. instance.actionData = data;
  178. instance.data = data.data;
  179. if (data.bone != null)
  180. {
  181. instance.bone = armature.GetBone(data.bone.name);
  182. }
  183. if (data.slot != null)
  184. {
  185. instance.slot = armature.GetSlot(data.slot.name);
  186. }
  187. }
  188. /// <summary>
  189. /// - If is a frame event, the value is used to describe the time that the event was in the animation timeline. (In seconds)
  190. /// </summary>
  191. /// <version>DragonBones 4.5</version>
  192. /// <language>en_US</language>
  193. /// <summary>
  194. /// - 如果是帧事件,此值用来描述该事件在动画时间轴中所处的时间。(以秒为单位)
  195. /// </summary>
  196. /// <version>DragonBones 4.5</version>
  197. /// <language>zh_CN</language>
  198. public float time;
  199. /// <summary>
  200. /// - The event type。
  201. /// </summary>
  202. /// <version>DragonBones 4.5</version>
  203. /// <language>en_US</language>
  204. /// <summary>
  205. /// - 事件类型。
  206. /// </summary>
  207. /// <version>DragonBones 4.5</version>
  208. /// <language>zh_CN</language>
  209. public string type;
  210. /// <summary>
  211. /// - The event name. (The frame event name or the frame sound name)
  212. /// </summary>
  213. /// <version>DragonBones 4.5</version>
  214. /// <language>en_US</language>
  215. /// <summary>
  216. /// - 事件名称。 (帧事件的名称或帧声音的名称)
  217. /// </summary>
  218. /// <version>DragonBones 4.5</version>
  219. /// <language>zh_CN</language>
  220. public string name;
  221. public Armature armature;
  222. /// <summary>
  223. /// - The bone that dispatch the event.
  224. /// </summary>
  225. /// <see cref="DragonBones.Bone"/>
  226. /// <version>DragonBones 4.5</version>
  227. /// <language>en_US</language>
  228. /// <summary>
  229. /// - 发出该事件的骨骼。
  230. /// </summary>
  231. /// <see cref="DragonBones.Bone"/>
  232. /// <version>DragonBones 4.5</version>
  233. /// <language>zh_CN</language>
  234. public Bone bone;
  235. /// <summary>
  236. /// - The slot that dispatch the event.
  237. /// </summary>
  238. /// <see cref="DragonBones.Slot"/>
  239. /// <version>DragonBones 4.5</version>
  240. /// <language>en_US</language>
  241. /// <summary>
  242. /// - 发出该事件的插槽。
  243. /// </summary>
  244. /// <see cref="DragonBones.Slot"/>
  245. /// <version>DragonBones 4.5</version>
  246. /// <language>zh_CN</language>
  247. public Slot slot;
  248. /// <summary>
  249. /// - The animation state that dispatch the event.
  250. /// </summary>
  251. /// <see cref="DragonBones.AnimationState"/>
  252. /// <version>DragonBones 4.5</version>
  253. /// <language>en_US</language>
  254. /// <summary>
  255. /// - 发出该事件的动画状态。
  256. /// </summary>
  257. /// <see cref="DragonBones.AnimationState"/>
  258. /// <version>DragonBones 4.5</version>
  259. /// <language>zh_CN</language>
  260. public AnimationState animationState;
  261. /// <private/>
  262. public ActionData actionData;
  263. public UserData data;
  264. /// <private/>
  265. protected override void _OnClear()
  266. {
  267. this.time = 0.0f;
  268. this.type = string.Empty;
  269. this.name = string.Empty;
  270. this.armature = null;
  271. this.bone = null;
  272. this.slot = null;
  273. this.animationState = null;
  274. this.actionData = null;
  275. this.data = null;
  276. }
  277. }
  278. }