(时间管理)_OP平台D游戏引擎实现——时间动画

上传人:管****问 文档编号:119774033 上传时间:2020-01-25 格式:DOC 页数:25 大小:99.86KB
返回 下载 相关 举报
(时间管理)_OP平台D游戏引擎实现——时间动画_第1页
第1页 / 共25页
(时间管理)_OP平台D游戏引擎实现——时间动画_第2页
第2页 / 共25页
(时间管理)_OP平台D游戏引擎实现——时间动画_第3页
第3页 / 共25页
(时间管理)_OP平台D游戏引擎实现——时间动画_第4页
第4页 / 共25页
(时间管理)_OP平台D游戏引擎实现——时间动画_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《(时间管理)_OP平台D游戏引擎实现——时间动画》由会员分享,可在线阅读,更多相关《(时间管理)_OP平台D游戏引擎实现——时间动画(25页珍藏版)》请在金锄头文库上搜索。

1、经过几篇文章的介绍,我们的引擎基本上已经开始慢慢成形了,上一节我们虽然我们实现了各种组件,但是这些组件和节点(Node)都处于静止状态,很显然既然是游戏,就不可能没有动画,那么这一片文章我们就将给大家介绍引擎的动画系统,这里我们将动画系统分为两个大类,其一是一些基本的动画,包括位置的移动,缩放、旋转,透明度变化等,其二是帧动画,即由许多帧构成的动画,在实现这些动画之前,我们都需要对一些基础类进行封装,以方便我们对各种动画的实现。动作(Action)这里我们说的动作类便是所有动画的基类,该类封装一个特定行为,在运行时赋予动作一个目标,于是这个目标将会执行该动作。同时需要注意只有节点(Node)的

2、子类才能执行一个动作。有些动作只有特定的节点类型才能运行,但是大部分动作都不限制节点具体类型。由于是所有动画的基类,所以我们只需要实现动画的路框架,包括动画结束的回调函数等,具体的动画效果实现将在其子类来实现,如代码清单5-1所示。代码清单5-1:Action实现view plaincopy to clipboardprint?1. publicabstractclassActionimplementsYFSCopyable 2. /非法的标记,为-1 3. publicstaticfinalintINVALID_TAG=-1; 4. /源目标 5. privateNodemOriginalT

3、arget; 6. /目标节点 7. publicNodemTarget; 8. /动画标记 9. privateintmTag; 10. /回调 11. privateCallbackmCallback; 12. /得到源节点 13. publicNodegetOriginalTarget() 14. returnthis.mOriginalTarget; 15. 16. /设置源节点 17. publicvoidsetOriginalTarget(Nodevalue) 18. this.mOriginalTarget=value; 19. 20. /得到目标 21. publicNodeg

4、etTarget() 22. returnthis.mTarget; 23. 24. /设置目标 25. publicvoidsetTarget(Nodevalue) 26. this.mTarget=value; 27. 28. /设置回调 29. publicvoidsetCallback(Callbackcallback) 30. this.mCallback=callback; 31. 32. /得到回调 33. publicCallbackgetCallback() 34. returnthis.mCallback; 35. 36. /得到,设置tag 37. publicintge

5、tTag() 38. returnthis.mTag; 39. 40. publicvoidsetTag(intvalue) 41. this.mTag=value; 42. 43. /构建动作 44. protectedAction() 45. this.mTarget=(this.mOriginalTarget=null); 46. this.mTag=INVALID_TAG; 47. 48. /拷贝动作 49. publicabstractActioncopy(); 50. /生成反响动作 51. publicabstractActionreverse(); 52. /开始在指定节点上执

6、行动作 53. publicvoidstart(Nodetarger) 54. this.mOriginalTarget=(this.mTarget=targer); 55. 56. /停止 57. publicvoidstop() 58. this.mTarget=null; 59. 60. /是否完成 61. publicbooleanisDone() 62. returntrue; 63. 64. /单步执行 65. publicabstractvoidstep(floatparamFloat); 66. /更新 67. publicabstractvoidupdate(floatpar

7、amFloat); 68. /回调接口,动作完成之后进入 69. publicstaticabstractinterfaceCallback 70. publicabstractvoidonDone(ActionparamAction); 71. 72. public abstract class Action implements YFSCopyable /非法的标记,为-1 public static final int INVALID_TAG = -1; /源目标 private Node mOriginalTarget; /目标节点 public Node mTarget; /动画标记

8、 private int mTag; /回调 private Callback mCallback; /得到源节点 public Node getOriginalTarget() return this.mOriginalTarget; /设置源节点 public void setOriginalTarget(Node value) this.mOriginalTarget = value; /得到目标 public Node getTarget() return this.mTarget; /设置目标 public void setTarget(Node value) this.mTarge

9、t = value; /设置回调 public void setCallback(Callback callback) this.mCallback = callback; /得到回调 public Callback getCallback() return this.mCallback; /得到,设置tag public int getTag() return this.mTag; public void setTag(int value) this.mTag = value; /构建动作 protected Action() this.mTarget = (this.mOriginalTa

10、rget = null); this.mTag = INVALID_TAG; /拷贝动作 public abstract Action copy(); /生成反响动作 public abstract Action reverse(); /开始在指定节点上执行动作 public void start(Node targer) this.mOriginalTarget = (this.mTarget = targer); /停止 public void stop() this.mTarget = null; /是否完成 public boolean isDone() return true; /单

11、步执行 public abstract void step(float paramFloat); /更新 public abstract void update(float paramFloat); /回调接口,动作完成之后进入 public static abstract interface Callback public abstract void onDone(Action paramAction); 从代码中我们可以看到,我们构建了两个Node对象,mOriginalTarget和mTarget分别是源目标和当前的目标,源目标主要用于处理特定的动画,比如:屏幕的翻转效果等,当前目标表示

12、当前动画在其目标上执行,同时我们还为每个动画都分配了一个标记(mTag),这样方便管理,这里特别需要说明的是我们的回调接口Callback,用于处理动画执行完毕之后触发其接口中的onDone函数,同时还提供了生成反向动画的函数reverse,当然这并不是每个动画都能生成反向动画,需要在子类进行实现,后面我们会有实例介绍。动作管理器(ActionManager)动作管理器则是用来管理整个引擎中的动画,我们知道由于一个节点可以包含很多个动画,因此我们就构建了一个HashElement来表示一个节点的动画情况,HashElement中包括了一个目标节点和该节点的动画序列以及是否暂停,线面我们看Act

13、ionManager的具体实现,如代码清单5-2所示。代码清单5-2:ActionManager实现view plaincopy to clipboardprint?1. publicclassActionManager 2. /所有的动作列表,包括每个节点的动画 3. privateConcurrentHashMaptargets; 4. privatestaticActionManagersInstance; 5. static 6. sInstance=null; 7. 8. /取得本类实例对象 9. publicstaticActionManagergetInstance() 10. synchronized(ActionManager.class) 11. if(sInstance=null) 12. s

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号