Cocos2d-x提供的动作,只要是CCNode对象都可以使用。
1、常用操作如下:
1)runAction(cocos2d::CCAction* action)//执行一个动作action
2)CCDirector::sharedDirector()->getActionManager()->pauseTarget(cocos2d::CCObject* pTarget)//暂停目标pTarget对象的动作
3)CCDirector::sharedDirector()->getActionManager()->……//继续目标对象的动作
4)stopAction(cocos2d::CCAction* action)/停止的目标对象的动作
stopActionByTag(int tag)//停止的目标动作对象的tag值
5)CCDirector::sharedDirector()->getActionManager()->removeAction(cocos2d::CCAction* action)//删除目标动作对象
6)CCDirector::sharedDirector()->getActionManager()->removeActionByTag(unsigned int tag,cocos2d::CCObject* pTarget)
参数1:要删除的动作的tag值
参数2:要删除动作所在的目标对象
7)pauseSchedulerAndActions()//暂停所有动作,连更新函数也全部暂停
CCSet* CCDirector::sharedDirector->getActionManager()->pauseAllRunningActions()//暂停所有动作,将暂停的动作对象记录存放在CCSet集合中。
8)resumeSchedulerAndActions()
CCDirector::sharedDirector()->getActionManager()->resumeTargets(cocos2d::CCSet* targetsToResume)//利用记录的已暂停的CCSet集合恢复动作
9)stopAllActions()//停止所有动作
10)CCDirector::sharedDirector()->getActionManager()->removeAllAction()//删除所有动作
2、常用49种动作详解
1)CCMoveTo::create(float duration,const CCPoint& position)//创建一个移动的动作
参数1:移动到目标坐标的时间
参数2:目标坐标
2)CCMoveBy::create(float duration,const CCPoint& position)//创建一个移动的动作,CCMoveBy支持reverse()函数,可以获取其反向动作
参数1:移动到目标坐标的时间
参数2:目标坐标
3)CCScaleTo::create(float duration,float s)//创建一个缩放的动作
参数1:达到缩放大小所需的时间(秒)
参数2:缩放的比例,其值=1,原大小;其值>1,放大;其值<1,缩小
4)CCScaleBy::create(float duration,float s)//创建一个缩放的动作,CCScaleBy支持reverse()函数,可以获取其反向动作
参数1:达到缩放大小所需的时间(秒)
参数2:缩放的比例
5)CCRotateTo::create(float duration,float fDeltaAngle)//创建一个旋转的动作
参数1:旋转到特定角度所需的时间(秒)
参数2:旋转的角度,范围是0-360
6)CCRotateBy::create(float duration,float fDeltaAngle)//创建一个旋转的动作,支持reverse()函数,可获取其反向动作
参数1:旋转到特定角度所需的时间(秒)
参数2:旋转的角度,范围是0-360
7)CCSkewTo::create(float t,float sx,float sy)//创建一个倾斜的动作
参数1:倾斜到特定角度所需的时间(秒)
参数2:x轴的倾斜角度
参数3:y轴的倾斜角度
8)CCSkewBy::create(float t,float sx,float sy)//创建一个倾斜的动作,支持reverse()函数,可获取其方向动作
参数1:倾斜到特定角度所需的时间(秒)
参数2:x轴的倾斜角度
参数3:y轴的倾斜角度
9)CCjumpTo::reate(float duration,const CCPoint& position,float height,int jumps)//创建一个跳的动作
参数1:完成动作用时(秒)
参数2:目标的位置
参数3:跳的高度
参数4:跳到目标点所需跳的次数
10)CCjumpBy::reate(float duration,const CCPoint& position,float height,int jumps)//创建一个跳的动作,支持reverse()函数,可获取其方向动作
参数1:完成动作用时(秒)
参数2:目标的位置
参数3:跳的高度
参数4:跳到目标点所需跳的次数
11)CCBezierTo::create(float t,const ccBezierConfig &c)//创建一个贝塞尔曲线运动的动作参数1:贝塞尔曲线运动所需时间(秒)
参数2:ccBezierConfig结构体如下:
typedef struct _ccBezierConfig {
CCPoint endPosition;//结束点
CCPoint controlPoint_1;//控制点1
CCPoint controlPoint_2;//控制点2
}ccBezierConfig;
12)CCBezierBy::create(float t,const ccBezierConfig &c)//创建一个贝塞尔曲线运动的动作,支持reverse()函数,可获取其方向动作
参数1:贝塞尔曲线运动所需时间(秒)
参数2:ccBezierConfig结构体
13)CCFadeIn::create(float d)//创建一个渐变出现的动作,参数渐变所需时间(秒)
14)CCFadeOut::create(float d)//创建一个渐变消失的动作,参数渐变所需时间(秒)
15)CCTintTo::create(float duration,GLubyte red,GLubyte green,GLubyte blue)//创建一个色彩变化的动作
参数1:色彩变化所需时间(秒)
参数2:红色分量
参数3:绿色分量
参数4:蓝色分量
16)CCTintBy::create(float duration,GLubyte red,GLubyte green,GLubyte blue)//创建一个色彩变化的动作,支持reverse()函数,可获取其方向动作
17)CCBlink::create(float duration,unsigned int uBlinks)//创建一个闪烁的动作
参数1:闪烁完成的时间(秒)
参数2:闪烁的次数
18)CCDelayTime::create(float d)//创建一个延迟的动作,参数是延迟的时间(秒)
19)CCOrbitCamera::create(float t,float radius,float deltaRadius,float angleZ,float deltaAngleZ,float angleX,float deltaAngleX)//创建一个球面坐标轨迹进行旋转的动作
参数1:旋转轨迹所需时间
参数2:其实半径
参数3:半径差
参数4:起始Z角
参数5:旋转Z角差
参数6:起始X角
参数7:旋转X角差
20)CCCardinalSplineTo::create(float duration,CCPointArray* points,float tension)//创建一个样条曲线轨迹的动作
参数1:完成轨迹所需的时间
参数2:控制点的坐标数组
参数3:拟合度,其值=0,路径最柔和
21)CCCardinalSplineBy::create(float duration,CCPointArray* points,float tension)//创建一个样条曲线轨迹的动作,支持reverse()函数
22)CCCatmullRomTo::create(float dt,CCPointArray* points)//创建一个样条插值轨迹
参数1:完成轨迹的时间
参数2:控制点的坐标数组
23)CCCatmullRomBy::create(float dt,CCPointArray* points)//创建一个样条插值轨迹,支持reverse()函数
24)CCFollow::create(CCNode* pFollowedNode,const CCRect& rect=CCRectZero)//创建一个跟随的动作
参数1:跟随的目标对象
参数2:跟随范围,离开范围就不再跟随
25)CCEaseBounceIn::create(cocos2d::CCActionInterval* pAction)//让目标动作赋予弹力,且以目标动作起始位置开始反弹,参数是目标动作
26)CCEaseBounceOut::create(cocos2d::CCActionInterval* pAction)//让目标动作赋予弹力,且以目标动作结束位置开始反弹,参数是目标动作
27)CCEaseBounceInOut::create(cocos2d::CCActionInterval* pAction)//让目标动作赋予弹力,且以目标动作起始和结束位置开始反弹,参数是目标动作
28)CCEaseBackIn::create(cocos2d::CCActionInterval* pAction)//让目标动作赋予回力,且以目标动作起点位置作为回力点
29)CCEaseBackOut::create(cocos2d::CCActionInterval* pAction)//让目标动作赋予回力,且以目标动作终点位置作为回力点
30)CCEaseBackInOut::create(cocos2d::CCActionInterval* pAction)//让目标动作赋予回力,且以目标动作起点与终点位置作为回力点
31)CCEaseElasticIn::create(cocos2d::CCActionInterval* pAction)//让目标动作赋予弹性,且以目标动作起点位置赋予弹性
32)CCEaseElasticOut::create(cocos2d::CCActionInterval* pAction)//让目标动作赋予弹性,且以目标动作终点位置赋予弹性
33)CCEaseElasticInOut::create(cocos2d::CCActionInterval* pAction)//让目标动作赋予弹性,且以目标动作起点与终点位置赋予弹性
34)CCEaseExponentialIn::create(cocos2d::CCActionInterval* pAction)//让目标动作缓慢开始,参数 目标动作
35)CCEaseExponentialOut::create(cocos2d::CCActionInterval* pAction)//让目标动作缓慢终止,参数 目标动作
36)CCEaseExponentialInOut::create(cocos2d::CCActionInterval* pAction)//让目标动作缓慢开始缓慢终止,参数 目标动作
37)CCEaseRateAction::create(cocos2d::CCActionInterval* pAction,float fRate)//让目标动作设置速率,参数1:目标动作,参数2:速率
38)CCEaseSineIn::create(cocos2d::CCActionInterval* pAction)//让目标动作由慢至快
39)CCEaseSineOut::create(cocos2d::CCActionInterval* pAction)//让目标动作由快至慢
40)CCEaseSineInOut::create(cocos2d::CCActionInterval* pAction)//让目标动作由慢至快,再由快至慢
41)CCSpeed::create(cocos2d::CCActionInterval* pAction,float fSpeed)//让目标动作运行速度加倍。参数1:目标动作,参数2:倍速
42)CCSpawn::create(cocos2d::CCFiniteTimeAction* pAction1,...)//让多个动作同时执行,参数1:目标动作的可变参数
43)CCSequence::create(cocos2d::CCFiniteTimeAction* pAction1,...)//让多个动作按照前后顺序逐一执行,参数:目标动作的可变参数
如果需要对一个序列中的所有动作全部按顺序进行运动,可以使用如下形式操作。
<pre name="code" class="cpp"><pre name="code" class="cpp">CCActionInterval* move = CCMoveTo::create(2,cpp(300,sp->getPositionY()));如果需要对一个序列中所有动作全部按顺序进行反向运动,可以使用如下形式操作:
CCActionInterval* scale = CCScaleTo::create(2,3);
CCFiniteTimeAction* seq = CCSequence::create(move,scale,NULL);
sp->runAction(seq);
CCActionInterval* move = CCMoveBy::create(2,cpp(300,sp->getPositionY()));44)CCRepeat::create(cocos2d::CCFiniteTimeAction* pAction1,unsigned int times)//让目标动作重复运动,目标动作可以是CCSequence,CCSpawn
CCActionInterval* scale = CCScaleBy::create(2,3);
CCFiniteTimeAction* seq = CCSequence::create(move,scale,NULL);
sp->runAction(seq);
CCFiniteTimeAction* reverseSeq = CCSequence::create(seq,seq->reverse(),NULL);
sp->runAction(reverseSeq);
45)CCRepeatForever::create(cocos2d::CCFiniteTimeAction* pAction1,unsigned int times)//让目标动作进行永久性重复运动,目标如44
46)CCCallFunc::create(cocos2d::CCObject* pSelectorTarget,SEL_CallFunc selector)//创建一个回调动作,调用不带参数的回调方法
参数1:目标对象
参数2:目标回调函数
47)CCCallFuncN::create(cocos2d::CCObject* pSelectorTarget,SEL_CallFunc selector)//创建一个回调动作,调用带一个参数的回调方法
48)CCCallFuncND::create(cocos2d::CCObject* pSelectorTarget,SEL_CallFunc selector,void *d)//创建一个回调动作,调用带两个参数的回调方法
参数1:目标对象
参数2:目标回调函数
参数3:可以是任意类型
49)CCAnimate:动画。