cocos2d-x动画整理(原文)

来源:互联网 发布:二维数组是什么 编辑:程序博客网 时间:2024/04/30 00:50
欢迎转载:注明出处:http://blog.sina.com.cn/s/blog_7d1531ed010168y5.html
//随便试了试,还有一些 都是这些动画 互相融合在一起的动画,举一反三 就OK

//move 动画 移动动画

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

    CCSprite*sprite1=CCSprite::create("52design.com_kr_001.png");

    sprite1->cocos2d::CCNode::setPosition(200200);

    sprite1->setScale(0.4);

    this->addChild(sprite1);

    CCActionInterval actionBy = CCMoveBy::create(2ccp(sprite1->getPositionX(),sprite1->getPositionY()));//开始位置

    CCActionInterval actionTo = CCMoveTo::create(2ccp(s.width-40, s.height-40));//结束位置

    CCActionInterval actionByBack = actionBy->reverse();

    sprite1->runActionCCSequence::create(actionBy, actionByBack, NULL));//折回

//    sprite1->runAction(actionTo);

//      sprite1->runAction(CCMoveTo::create(1ccp(40,40)));

//缩放动画 Scale比例

 

    CCActionInterval actionTo = CCScaleTo::create(2.0f, 0.5f);

    CCActionInterval actionBy = CCScaleBy::create(2.0f1.0f10.0f);

    CCActionInterval actionBy2 = CCScaleBy::create(2.0f5.0f1.0f);

//    sprite1->runAction( actionTo);

//    sprite1->runAction( CCSequence::create(actionBy, actionBy->reverse(), NULL));

    sprite1->runActionCCSequence::create(actionBy2, actionBy2->reverse(), NULL));

//旋转动画

 

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

    CCActionInterval actionByBack = actionBy->reverse();

    sprite1->runActionCCSequence::create(actionBy, actionByBack, NULL));


//旋转并扩大

 

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

    CCActionInterval *actionToBack = CCSkewTo::create(200);

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

//jump 动画

 

 CCActionInterval actionBy = CCJumpBy::create(2ccp(300,0), 504);//4分几次弹跳过去

  CCActionInterval actionByBack = actionBy->reverse();

 sprite1->runActionCCSequence::create(actionBy, actionByBack, NULL));

//贝瑟尔曲线动画

 

ccBezierConfig bezier;

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

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

    bezier.endPosition = ccp(300,100);


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

    CCActionInterval bezierBack = bezierForward->reverse();    

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

 sprite1->setPosition(ccp(400,160));


//闪烁动画

 

CCActionInterval action1 = CCBlink::create(2, 10);

 sprite1->runAction( action1);

//慢慢变黑

 

 CCActionInterval action1 = CCFadeIn::create(1.0f);

    CCActionInterval action1Back = action1->reverse();

 sprite1->runAction( CCSequence::create( action1, action1Back, NULL));

//颜色动画

 

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

    CCActionInterval action2Back = action2->reverse();

 sprite1->runAction( CCSequence::create( action2, action2Back, NULL));


//动画完成回调

 

CCFiniteTimeAction action = CCSequence::create(

        CCPlace::create(ccp(200,200)),

        CCShow::create(),

        CCMoveBy::create(1ccp(100,0)),

        CCCallFunc::create(this, callfunc_selector(ActionSequence2::callback1)),

        CCCallFuncN::create(this, callfuncN_selector(ActionSequence2::callback2)),

        CCCallFuncND::create(this, callfuncND_selector(ActionSequence2::callback3), (void*)0xbebabeba),

        NULL);


    sprite1->runAction(action);

//间歇性动画 

  CCActionInterval move = CCMoveBy::create(1, ccp(150,0));

    CCFiniteTimeAction action = CCSequence::create( move, CCDelayTime::create(2), move, NULL);//休息两秒再移动


    sprite1->runAction(action);


 

  CCActionInterval a1 = CCMoveBy::create(1, ccp(150,0));

    CCActionInterval action1 = CCRepeat::create(

        CCSequence::create( CCPlace::create(ccp(60,60)), a1, NULL) , 

        3); 

    CCAction action2 = CCRepeatForever::create(

        (CCActionInterval*)(CCSequence::create((CCActionInterval*)(a1->copy()->autorelease()), a1->reverse(), NULL))

        );


    sprite1->runAction(action1);//连续播放3遍

    sprite2->runAction(action2);//一直播

原创粉丝点击