【Cocos2d-x 3.x】 动作类Action学习
发布时间:2020-12-14 16:45:42 所属栏目:百科 来源:网络整理
导读:游戏设计中,动作是不可缺少的,Cocos2d-x中所有的动作都继承自Action类,而Action类继承自Ref和Clonable类,整个动作类继承体系如图: FiniteTimeAction是所有瞬时动作和延时动作的父类,Follow跟随一个节点的动作,Speed改变一个动作的时间。,其中FiniteT
游戏设计中,动作是不可缺少的,Cocos2d-x中所有的动作都继承自Action类,而Action类继承自Ref和Clonable类,整个动作类继承体系如图:
FiniteTimeAction是所有瞬时动作和延时动作的父类,Follow跟随一个节点的动作,Speed改变一个动作的时间。,其中FiniteTimeAction的两个子类以及这两个子类的子类是重点。
瞬时性动作类<ActionInstant.h>中的类是瞬时动作类,它的子类有:
//... 显示一个节点 setVisible(true) class Show : public ActionInstant { }; //... 隐藏一个节点 setVisible(false) class Hide : public ActionInstant { }; //... 切换节点的可视属性 setVisible(!_target->isVisible()) class ToggleVisibility : public ActionInstant { }; //... 移除自己 class RemoveSelf : public ActionInstant { }; // 水平翻转精灵 class FlipX : public ActionInstant { }; // 垂直翻转精灵 class FlipY : public ActionInstant { }; // 将节点放置到某个位置 class Place : public ActionInstant { }; // 设置动作的回调函数为 std::function<void()> class CallFunc : public ActionInstant { public : static CallFunc * create(const std::function<void()>& func); }; // 设置动作的回调函数为 std::function<void(Node*)> class CallFuncN : public CallFunc { public : static CallFuncN * create(const std::function<void(Node*)>& func); };
延时性动作类<ActionInterval.h>中的类是瞬时动作类,它的子类有:
// 创建序列动画 class Sequence : public ActionInterval { public : // 这种方式创建序列动画最后需要加nullptr // 比如: Sequence::create(action1,action2,nullptr); static Sequence* create(FiniteTimeAction *action1,...); // 根据一个动作vector来创建 static Sequence* create(const Vector<FiniteTimeAction*>& arrayOfActions); // 创建两个动作 static Sequence* createWithTwoActions(FiniteTimeAction *actionOne,FiniteTimeAction *actionTwo); // 根据变长动作数组创建序列动作 static Sequence* createWithVariableList(FiniteTimeAction *action1,va_list args); }; // 重复一个动作(一次) class Repeat : public ActionInterval { public : // 创建一个FiniteTimeAction动作 static Repeat* create(FiniteTimeAction *action,unsigned int times); }; // 创建不断重复的动作 class RepeatForever : public ActionInterval { public : // 由一个延时动作ActionInterval而创建 static RepeatForever* create(ActionInterval *action); }; // 创建同时执行的动作 class Spawn : public ActionInterval { public : // 同序列式动作,最后需要添加nullptr static Spawn* create(FiniteTimeAction *action1,...); static Spawn* createWithVariableList(FiniteTimeAction *action1,va_list args); static Spawn* create(const Vector<FiniteTimeAction*>& arrayOfActions); static Spawn* createWithTwoActions(FiniteTimeAction *action1,FiniteTimeAction *action2); }; // 旋转动作 旋转到某个角度 class RotateTo : public ActionInterval { }; // 旋转动作 旋转一定角度 class CC_DLL RotateBy : public ActionInterval { }; // 移动一定距离 class MoveBy : public ActionInterval { }; // 移动到某个点 class MoveTo : public MoveBy { }; /*---------- 这个动作By版本继承自To版本 ----------*/ // 使某个倾斜到某个角度 class SkewTo : public ActionInterval { }; // 倾斜一定角度 class SkewBy : public SkewTo { }; // 跳跃一定距离 class JumpBy : public ActionInterval { }; // 跳跃到某个点 class JumpTo : public JumpBy { }; // 贝塞尔曲线 class BezierBy : public ActionInterval { }; // class BezierTo : public BezierBy { }; // 缩放 class ScaleTo : public ActionInterval { }; class ScaleBy : public ScaleTo { }; // 闪烁 class Blink : public ActionInterval { }; // 设置透明度 class FadeTo : public ActionInterval // 淡入 class FadeIn : public FadeTo { }; // 淡出 class FadeOut : public FadeTo { }; // 延时动作 class DelayTime : public ActionInterval { }; // 动画 class Animate : public ActionInterval { }; 在所有延时动作里:
动作管理所有的动作执行都由动作管理类ActionManager对象_actionManager来管理动作,该对象定时刷新自己的update函数,然后调用每个动作的step函数,这些step再根据自身的update或结束动作。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ReactiveCocoa Tutorial – The Definitive Introduction:
- NoSQL数据库的基础知识
- swift – 属性不能被声明为public,因为它的类型使用内部类型
- ruby-on-rails – Ruby on Rails表单页面缓存,包括authenti
- ruby -rvm安装:is_a_function:找不到命令
- 通过XSLT构建缺少的XML部分
- [Ajax 完整教程]-第 3 页 Ajax 中的高级请求和响应
- solrcore的schema.xml
- [React] Build a slide deck with mdx-deck using Markdown
- vb.net – 括号中的数字例如是什么? “{0}”是什么意思?