cocos2d-x基本知识点(6)---动作系列(上)

动作类CCAction:

CCAction类继承于对象类CCObject,有三个子类:有限时间动作(CCFiniteTimeAction),跟随动作(CCFollow),

移动速度(CCSpeed).其中有限时间动作分为瞬时动作(CCActionInstance)和延时动作(CCActionInterval)。

1、移动动作:CCMoveTo和CCMoveBy的使用

void  ActionMove::onEnter(){

ActionsDemo::onEnter();

centerSprites(3);

CCSize s = CCDirector::sharedDirector()->getWinSize();

CCActionInterval* actionTo = CCMoveTo::create(2,CCPointMake(s.width-40,s.height-40));

CCActionInterval* actionBy = CCMoveBy::create(2,CCPointMake(80,80));

CCActionInterval* actionByBack = actionBy->reverse();

m_tamara->runAction(actionTo);

m_grossini->runAction(CCSequence::create(actionBy,actionByBack,NULL));

m_kathia->runAction(CCMoveTo::create(1,CCPointMake(40,40)));

}

2、缩放动作:CCScaleTo和CCScaleBy的使用

void ActionScale::onEnter(){

ActionsDemo::onEnter();

centerSprites(3);

CCActionInterval* actionTo = CCScaleTo::create(2.0f,0,5f);

CCActionInterval* actionBy = CCScaleBy::create(2.0f,1.0f,10.0f);

CCActionInterval* actionBy2 = CCScaleBy::create(2.0f,5.0f,1.0f);

m_grossini->runAction(actionTo);

m_tamara->runAction(CCSequence::create(actionBy,actionBy_reverse(),NULL));

m_kathia->runAction(CCSequence::create(actionBy2,actionBy2->reverse(),NULL));

}

3、扭曲动作:CCSkewTo和CCSkewBy的使用

void ActionSkew::onEnter(){

ActionsDemo::onEnter();

centerSprites(3);

CCActionInterval* actionTo = CCSkewTo::create(2,38.2f,-37.2f);

CCActionInterval* actionToBack = CCSkewTo::create(2,0,0);

CCActionInterval* actionBy = CCSkewBy::create(2,0.0f,-90.0f);

CCActionInterval* actionBy2 = CCSkewBy::create(2,45.0f,45.0f);

CCActionInterval* actionByBack = actionBy->reverse();

m_tamara->runAction(CCSequence::create(actionTo,actionToBack,NULL));

m_grossini->runAction(CCSequence::create(actionBy2,actionBy2->reverse,NULL));

}

4、旋转动作:CCRotateTo和CCRotateBy的使用

void ActionRotate::onEnter(){

ActionsDemo::onEnter();

centerSprites(3);

CCActionInterval* actionTo = CCRotateTo::create(2,45);

CCActionInterval* actionTo2 = CCRotateTo::create(2,-45);

CCActionInterval* actionTo0 = CCRotateTo::create(2,0);

m_tamara->runAction(CCSequence::create(actionTo,actionTo0,NULL));

CCActionInterval* actionBy = CCRotateBy::create(2,360);

CCActionInterval* actionByBack = actionBy::reverse();

m_grossini->runAction(CCSequence::create(actionBy,actionByBack,NULL));

m_kathia->runAction(CCSequence::create(actionTo2,actionTo0->copy()->autorelease(),NULL));

}

5、跳跃动作:CCJumpTo和CCJumpBy的使用

void ActionJump::onEnter(){

ActionDemo::onEnter();

centerSprites(3);

CCActionInterval* actionTo = CCJumpTo::create(2,CCPointMake(300,300),50,4);

CCActionInterval* actionBy = CCJumpBy::create(2,CCPointMake(300,0),50,4);

CCActionInterval* actionUp = CCJumpBy::create(2,CCPointMake(0,0),80,4);

CCActionInterval* actionByBack = actionBy->reverse();

m_tamara->runAction(actionTo);

m_grossini->runAction(CCSequence::create(actionBy,actionByBack,NULL));

m_kathia->runAction(CCRepeatForever::create(actionUp));

}

6、贝塞尔曲线动作:CCBezierTo和CCBezierBy的使用

void ActionBezier::onEnter(){

ActionDemo::onEnter();

CCSize s = CCDirector::sharedDirector()->getWinSize();

centerSprites(3);

ccBezierConfig bezier;

bezier.controlPoint_1 = CCPointMake(0,s.height/2);

bezier.controlPoint_2 = CCPointMake(300,-s.height/2);

bezier.endPosition = CCPointMake(300,100);

CCActionInterval* bezierForward = CCBezierBy::create(3,bezier);

CCActionInterval* bezierBack = bezierForward->reverse();

CCAction* rep = CCRepeatForever::create((CCActionInterval*)CCSequence::create(bezierForward,

bezierBack,NULL));

m_tamara->setPosition(CCPointMake(80,160));

ccBezierConfig bezier2;

bezier2.controlPoint_1 = CCPointMake(100,s.height/2);

bezier2.controlPoint_2 = CCPointMake(200,-s.height/2);

bezier2.endPosition = CCPointMake(240,160);

CCActionInterval* bezierTo1 = CCBezierTo::create(2,beizer2);

m_kathia->setPosition(CCPointMake(400,160));

CCActionInterval* bezierTo2 = CCBezierTo::create(2,bezier2);

m_grossini->runAction(rep);

m_tamara->runAction(bezierTo1);

m_kathia->runAction(bezierTo2);

}

7、淡入和淡出动作:CCFadeIn和CCFadeOut的使用

void ActionFade::onEnter(){

ActionDemo::onEnter();

centerSprites(2);

m_tamara->setOpacity(0); //设置不透明度

CCActionInterval* action1 = CCFadeIn::actionWithDuration(1.0f);

CCActionInterval* action1Back = action1->reverse();

CCActionInterval* action2 = CCFadeOut::actionWithDuration(1.0f);

CCActionInterval* actionBack = action2->reverse();

m_tamara->runAction(CCSequence::actions(action1,action1Back,NULL));

m_kathia->runAction(CCSequence::actions(action2,action2Back;NULL));

}

8、闪烁动作:CCBlink的使用

void ActionBlink::onEnter(){

ActionsDemo::onEnter();

centerSprites(2);

CCActionInterval* action1 = CCBlink::actionWithDuration(2,10);

CCActionInterval* action2 = CCBlink::actionWithDuration(2,5);

m_tamara->runAction(action1);

m_kathia->runAction(action2);

}

9、色值渐变动作:CCTintTo和CCTintBy的使用

void ActionTint::onEnter(){

ActionsDemo::onEnter();

centerSprites(2);

CCActionInterval* action1 = CCTintTo::actionWithDuration(2,255,0,255);

CCActionInterval* action2 = CCTintBy::actionWithDuration(2,-127,-255,-127);

CCActionInterval* action2Back = action2->reverse();

m_tamara->runAction(action1);

m_kathia->runAction(CCSequence::actions(action2,action2Back,NULL));

}

10、摄像机动作:CCOrbitCamera的使用

void ActionOrbit::onEnter(){

ActionsDemo::onEnter();

centerSprites(3);

CCActionInterval* orbit1 = CCOrbitCamera::create(2,1,0,0,180,0,0);

CCFiniteTimeAction* action1 = CCSequence::create(orbit1,orbit1->reverse(),NULL);

CCActionInterval* orbit2 = CCOrbitCamera::create(2,1,0,0,180,-45,0);

CCFiniteTimeAction* action2 = CCSequence::create(orbit2,orbit2->reverse,NULL);

CCActionInterval* orbit3 = CCOribitCamera::create(2,1,0,0,180,90,0);

CCFiniteTimeAction* action3 = CCSequence::create(orbit3,orbit3->reverse(),NULL);

m_kathia->runAction(CCRepeatForever::create((CCActionInterval*)action1));

m_tamara->runAction(CCRepeatForever::create((CCActionInterval*)action2));

m_grossini->runAction(CCRepeatForever::create((CCActionInterval*)action3));

CCActionInterval* move = CCMoveBy::create(3,CCPointMake(100,-100));

CCActionInterval* move_back = move->reverse();

CCFiniteTimeAction* seq = CCSequence::create(move,move_back,NULL);

CCAction* rfe = CCRepeatForever::create((CCActionInterval*)seq);

m_kathia->runAction(rfe);

m_tamara->runAction((CCAction*)(rfe->copy()-.autorelease()));

m_grossini->runAction((CCAction*)(rfe->copy()->autorelease));

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值