cocos2dx Action 的学习Cocos2d-x v3.3 ActionManager详解
来源:互联网 发布:淘宝商品复制 编辑:程序博客网 时间:2024/05/21 08:44
Cocos2d-x v3.3 ActionManager详解
http://cn.cocos2d-x.org/tutorial/show?id=2755DelayTime* delayTime = DelayTime::create(animate->getDuration()/2);
CallFunc* callFunc1 = CallFunc::create(CC_CALLBACK_0(Figure::attacking,this));
DelayTime 和 CallFunc 都是 FiniteTimeAction的子类
Sequence* sequence = Sequence::create(delayTime, callFunc1, delayTime, callFunc2, NULL);
例如这个例子,它创建的时候由于参数是不定的
先
va_start(params, action1);
再
now = va_arg(args, FiniteTimeAction*);
最后
va_end(params);
解决了 不定参数传递的问题
createWithVariableList
解释了如何取得参数的过程。在VC++6.0的include有一个stdarg.h头文件,有如下几个宏定义:#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) ) //第一个可选参数地址#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) ) //下一个参数地址#define va_end(ap) ( ap = (va_list)0 ) // 将指针置为无效如果对以上几个宏定义不理解,可以略过,接着看后面的内容.在进程中,堆栈地址是从高到低分配的.当执行一个函数的时候,将参数列表入栈,压入堆栈的高地址部分,然后入栈函数的返回地址,接着入栈函数的执行代码,这个入栈过程,堆栈地址不断递减,一些黑客就是在堆栈中修改函数返回地址,执行自己的代码来达到执行自己插入的代码段的目的.总之,函数在堆栈中的分布情况是:地址从高到低,依次是:函数参数列表,函数返回地址,函数执行代码段.堆栈中,各个函数的分布情况是倒序的.即最后一个参数在列表中地址最高部分,第一个参数在列表地址的最低部分.参数在堆栈中的分布情况如下:最后一个参数倒数第二个参数...第一个参数函数返回地址函数代码段
Sequence* Sequence::create(FiniteTimeAction *action1, ...){ va_list params; va_start(params, action1); Sequence *ret = Sequence::createWithVariableList(action1, params); va_end(params); return ret;}#endifSequence* Sequence::createWithVariableList(FiniteTimeAction *action1, va_list args){ FiniteTimeAction *now; FiniteTimeAction *prev = action1; bool bOneAction = true; while (action1) { now = va_arg(args, FiniteTimeAction*); if (now) { prev = createWithTwoActions(prev, now); bOneAction = false; } else { // If only one action is added to Sequence, make up a Sequence by adding a simplest finite time action. if (bOneAction) { prev = createWithTwoActions(prev, ExtraAction::create()); } break; } } return ((Sequence*)prev);}
0 0
- cocos2dx Action 的学习Cocos2d-x v3.3 ActionManager详解
- Cocos2d-x 3.4 Action管理(ActionManager)总结
- cocos2d-x 3.1 ActionManager
- Cocos2d-x-----------------------------------------------ActionManager
- cocos2d-x3.3 源码分析之-动作Action和ActionManager
- cocos2D v3.x 中action的回调block变化
- cocos2d-x ActionManager控制精灵的暂停运动
- Cocos2d-x v3.X的颜色混合BlendFunc使用详解
- Cocos2d-x v3.X的颜色混合BlendFunc使用详解
- Cocos2d-x v3.3的颜色混合BlendFunc
- cocos2d-x-3.3rc2 动作管理 ActionManager
- Cocos2d-X官方Demo---1.ActionManager
- Cocos2d-x v3.x官方文档]动作 (Action)
- cocos2d-x的action
- cocos2d-x v3.3 ActionInterval
- COCOS2DX学习笔记 windows下cocos2d-x的环境配置
- Cocos2d-X研究之v3.x纹理缓存详解
- Cocos2d-X研究之v3.x 事件分发机制详解
- java序列化与反序列化总结
- Myeclipse10.6装好了Aptana插件之后,启动都会报弹出对话框报java.lang.NullPointerException错误
- Http1.1中的Transfer-Encoding和Content-Encoding及Content-Type整理
- WinForm无法引用System.Web.dll
- C++中数字与字符串之间的转换
- cocos2dx Action 的学习Cocos2d-x v3.3 ActionManager详解
- Android RecyclerView 使用完全解析 体验艺术般的控件
- 斯坦福大学机器学习第五课"正则化“
- Ubuntu 下升级 Subversion 1.7
- testng的使用
- win7访问Linux Samba的共享目录提示“登录失败:用户名或密码错误”解决方法
- Parcelable 类的使用
- 页面静态刷新<select>下拉框值
- IDEA+Maven3 + Jetty-plugin