动作类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));
}