Cocos2d-x学习笔记(三)浅析动作类CCAction(2)
来源:互联网 发布:长春软件培训 编辑:程序博客网 时间:2024/05/22 11:34
有关CCAction其它动作类简介:
(1)摄像机动作类CCOrbitCamera:
摄像机动作是环绕中心屏幕旋转所形成的动作,其旋转坐标采用球坐标描述。
Create()函数原型CCOrbitCamera* create(float,float,float,float,float,float,float),第一个参数表示时间间隔,第二、三个参数分别表示起始半径和过程半径,第四、五个参数分别表示起始Z轴夹角和过程Z轴夹角,第六、七个参数分别表示起始X轴夹角和过程X轴夹角。
(2)基本样条动作:CCCatmullRomTo(By)和CCCardinalSplineTo(By)
游戏对象通过一些离散的点模拟出相应的路径,有相应的公式模拟出这条曲线,那就是基本样条了。
1、基本样条路径CCCardinalSplineTo(By):
Create()函数原型CCCardinalSplineTo* crete(float,CCPointArray*,float),第一个参数表示时间间隔,第二个参数表示点数组,第三个参数表示拉力系数。前面说过,一个是相对量,一个是绝对量,注意使用相对量时应第一个点最好设置为(0,0),否则会被忽略掉。
2、Catmull-Rom样条路径CCCatmullRomTo(By),用法类似,只是不需要拉力系数做参数。
(3)缓冲动作类CCActionEase:
在现实运动中,常常需要实现一些加减速效果,缓冲动作可以帮我们实现。主要有指数缓冲、赛因缓冲、跳跃缓冲、弹性缓冲、回震缓冲和基本缓冲六大类。一般第一个参数为缓冲动作,若有2个参数,基本动作的第二个参数为速率,弹性缓冲为震动周期。其基本调用形式为(CCActionInterval*)(move->copy()->autorelease()……)。
(4)组合动作类CCSequence、CCSpawn和CCRepeat、CCrepeatForever:
在游戏中,游戏对象有时不只是执行一个动作执行多个动作的动作序列,这时需要用动作组合在一起,用组合动作类可以实现它。
1、动作序列CCSequence:
前面也有提到过,Create()函数参数是由一系列动作及一个以NULL结尾的构成,调用形式一般为CCSequence::crate(ation1,ation2,…,NULL);
2、合成动作CCSpawn:
CCSpawn动作使被合成的动作同时进行,其调用方式与动作序列一致。
3、动作重复类CCRepeat、CCrepeatForever:
二者可以使动作重复进行,不同之处在于CCRepeat可以在第二个参数定义重复次数,而CCrepeatForever则一直重复。一般调用形式为:
CCRepeat::create((CCFiniteTimeAction*)(seq->copy()->autorelease()),nCount);
CCrepeatForever::create((CCActionInterval*)(seq->copy()->autorelease());
(5)跟随动作类CCFollow:
Create()函数原型CCFollow* create(CCNode*,CCRect&),第一参数为要跟随的动作节点(一般为执行动作的精灵类),第二个参数为运动的边界(如果没有传入边界,则视为没有边界)。
运行效果一般为:屏幕跟随精灵的移动而移动。
(6)可调整速度动作类CCSpeed:
Crate()函数原型CCSpeed* create(CCActionInterval*,float),第一个参数表示延时动作(一般为动作序列或合成动作),第二个参数可理解为速率。CCSpeed的成员函数setSpeed()可设置速度,等于1原速,大于1加速,小于1减速。
(7)动作延时类CCDelayTime:
Create()函数原型CCDelayTime* create(float),参数表示间隔时间。动作延时顾名思义延后一段时间执行,可以理解为执行了一段空动作,一般放在动作序列CCSequence中才能看到效果。
(8)改变动作执行对象类CCTargetedAction:
Create()函数原型CCTargetedAction.* create(CCNode*,CCFiniteTimeAction*),第一个参数表示执行动作的精灵,第二个参数为精灵执行的动作。当一个精灵执行一个动作序列时,遇到CCTargetedAction对象时会将权限赋给第一个精灵类参数执行其动作。参照代码分析:
CCTargetedAction *t1 = CCTargetedAction::create(m_kathia, jump2);
CCTargetedAction *t2 = CCTargetedAction::create(m_kathia, rot2);
CCSequence* seq = (CCSequence*)CCSequence::create(jump1, t1, rot1, t2, NULL);
CCRepeatForever *always = CCRepeatForever::create(seq);
m_tamara->runAction(always);
当m_tamara执行一系列动作时,遇到t1时动作jump2由精灵m_kathia执行,t2类似。主要目的是改变动作的执行对象。
(9)函数回调动作类CCCallFunc:
有时候某些动作执行完后,需要执行一些数据上的处理,比如攻击一个敌人,需要处理加减血等,这时需要使用函数回调动作。
Create()函数原型CCCallFunc* (CCObject*,SEL_CallFunc),第一个参数为拥有回调函数的对象,第二个参数为相应选择器获得相应函数名称。CCCallFuncN、CCCallFuncND类的使用类似,CCCallFuncND有三个参数,第三个参数是数据对象。
- Cocos2d-x学习笔记(三)浅析动作类CCAction(2)
- Cocos2d-x学习笔记(二)浅析动作类CCAction(1)
- Cocos2d-x学习笔记(四)浅析动作类CCAction(3)
- cocos2d-x学习笔记-CCAction(动作)
- cocos2d-x学习笔记-CCAction(动作)
- cocos2d-x学习笔记-CCAction(动作)
- cocos2d-x学习笔记-CCAction(动作)
- cocos2d-x CCAction动作学习笔记
- cocos2d-x学习笔记-CCAction(动作)
- cocos2d-x学习笔记-CCAction(动作)
- cocos2d-x初探学习笔记(3)--动作(CCAction)
- cocos2d-x初探学习笔记(3)--动作(CCAction)
- cocos2d-x初探学习笔记(3)--动作(CCAction)
- cocos2d-x初探学习笔记(3)--动作(CCAction)
- cocos2d-x 动作类 CCAction
- cocos2d-x CCAction:动作
- Cocos2d-x动作CCAction
- Cocos2d-x动作CCAction
- hufuman 编码实现(赫夫曼编码)
- java内部类了解
- Java 静态类
- 06-Oracle学习_练习-子查询 和 连接查询
- 嵌入式C开发人员的最好的0x10道笔试题
- Cocos2d-x学习笔记(三)浅析动作类CCAction(2)
- 一走进书房的QuickDove
- 前辈华为工作感悟
- WebService之Axis2系列教程(三)Axis2复合类型数据的传递
- [poj 2115]C Looooops[扩展欧几里德][模线性方程]
- 常用java date 方法集合
- u-boot中bootargs和bootcmd常用命令(下)
- 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活{ 多重背包} (题目真长啊啊啊啊~)
- mysql数据库性能优化的关键参数及mysql服务器优化