cocos2d-x 动画特效集合

bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }
    CCSize size =CCDirector::sharedDirector()->getWinSize();//获取屏幕大小  
    
    CCSprite * sp = CCSprite::create("Icon.png");
    sp->setPosition(ccp(200, 200));
    
    addChild(sp);
    
//    常见的22种特效
//    CCShaky3D
//作用:创建一个3d晃动的特效
//    参数1:晃动的范围
//    参数2:是否有z轴晃动
//    参数3:  网格大小
//    参数4:特效持续的时间
//    CCActionInterval * shaky3D= CCShaky3D::create(15, false, ccg(15, 10), 4);
//    sp->runAction(shaky3D);
    
//    CCShakyTiles3D
//    作用:创建一个3d瓷砖晃动的特效
    //    参数1:晃动的范围
    //    参数2:是否有z轴晃动
    //    参数3:  网格大小
    //    参数4:特效持续的时间
//    CCActionInterval * shakyTiles3D = CCShakyTiles3D::create(15, true, ccg(15, 10), 4);
//    sp->runAction(shakyTiles3D);
    
//    CCWaves
//    创建一个波动特效
//    参数1:波动的速率
//    参数2:振幅
//    参数3:水平波动
//    参数4:垂直波动
//    参数5:网格大小
//    参数6:特效持续时间
//    CCActionInterval * waves = CCWaves::create(10, 20, true, true, ccg(16, 12), 4);
//    sp->runAction(waves);
    
//    CCWaves3D
    //    创建一个3D波动特效
    //    参数1:波动的速率
    //    参数2:振幅
    //    参数3:网格大小
    //    参数4:特效持续时间
//    CCActionInterval * waves3d= CCWaves3D::create(10, 20, ccg(16, 12), 4);
//    sp->runAction(waves3d);
    
//    CCWavesTiles3D
    //    创建一个3D瓷砖波动特效
    //    参数1:波动的速率
    //    参数2:振幅
    //    参数3:网格大小
    //    参数4:特效持续时间
//    CCActionInterval * wavesTiles3D = CCWavesTiles3D::create(10, 20, ccg(16, 12), 4);
//    sp->runAction(wavesTiles3D);
    
//    CCFlipX3D
//    作用:x轴3D反转特效
//    参数:特效持续的时间
//    CCActionInterval *flipX3D= CCFlipX3D::create(4);
//    sp->runAction(flipX3D);
    
//    CCFlipY3D
    //    作用:Y轴3D反转特效
    //    参数:特效持续的时间
//    CCActionInterval * flipY3D = CCFlipY3D::create(4);
//    sp->runAction(flipY3D);
    
//    CCLens3D
//    作用:  凸镜特效
//    参数1:凸镜中心点
//    参数2:凸镜半径
//    参数3:网格大小
//    参数4:网格持续时间
//    CCActionInterval * lens3D= CCLens3D::create(CCPointMake(size.width/2, size.height/2), 240, ccg(15, 10), 4);
//    sp->runAction(lens3D);

//    CCRipple3D
//    作用:水波特效
//    参数1:起始位子
//    参数2:半径
//    参数3:速率
//    参数4:振幅
//    参数5:网格大小
//    参数6:特效持续的时间
//    CCActionInterval * ripple3D= CCRipple3D::create(CCPointMake(size.width/2, size.height/2), 240, 4, 160, ccg(15,10), 4);
//    sp->runAction(ripple3D);
    
//    CCLiquid
//    作用:液体特效
//    参数1:速率
//    参数2:振幅
//    参数3:网格大小
//    参数4:特效持续时间
//    CCActionInterval * liquid = CCLiquid::create(4, 20, ccg(16, 12), 4);
//    sp->runAction(liquid);
    
//    CCTwirl
//    作用:扭曲旋转特效
//    参数1:扭曲旋转中心点
//    参数2:扭曲旋转的次数
//    参数3:振幅
//    参数4:网格大小
//    参数5:特效持续时间
//    CCActionInterval  * twirl = CCTwirl::create(CCPointMake(size.width/2, size.height/2), 2, 2.5f, ccg(12, 8), 3);
//    sp->runAction(twirl);
    
//    CCShuffleTiles
//    作用:瓷砖的洗牌特效
//    参数1:随机数
//    参数2:网格大小
//    参数3:特效持续的时间
//    CCActionInterval *shuffleTiles = CCShuffleTiles::create(16, ccg(16, 12), 2);
//    sp->runAction(shuffleTiles);
    
//    CCShatteredTiles3D
//    作用:破碎的3D瓷砖特效
//    参数1:范围
//    参数2:是否开启z轴
//    参数3:网格大小
//    参数4:特效持续的时间
//    CCActionInterval * shatteredTiles3D= CCShatteredTiles3D::create(25, true, ccg(16, 12), 4);
//    sp->runAction(shatteredTiles3D);

//    CCFadeOutTRTiles
//    作用:部落格效果 , 从左下角到右下角
//    参数1:网格大小
//    参数2:特效持续的时间
//    CCActionInterval * fadeOutTRTiles = CCFadeOutTRTiles::create(ccg(16, 12), 3);
//    sp->runAction(fadeOutTRTiles);

//    CCFadeOutBLTiles
    //    作用:部落格效果 , 从右下角到左下角
    //    参数1:网格大小
    //    参数2:特效持续的时间
//    CCActionInterval * fadeOutBLTiles = CCFadeOutBLTiles::create(ccg(16, 12), 3);
//    sp->runAction(fadeOutBLTiles);

//    CCFadeOutUpTiles
//    作用:折叠效果 从下到上
    //    参数1:网格大小
    //    参数2:特效持续的时间
//    CCActionInterval * fadeOutUpTiles = CCFadeOutUpTiles::create(ccg(16, 12), 3);
//    sp->runAction(fadeOutUpTiles);
    
//    CCFadeOutDownTiles
    //    作用:折叠效果 从上到下
    //    参数1:网格大小
    //    参数2:特效持续的时间
//    CCActionInterval * fadeOutDownTiles = CCFadeOutDownTiles::create(ccg(16, 12), 3);
//    sp->runAction(fadeOutDownTiles);
  
//    CCTurnOffTiles
//    作用:方块消失特效
    //    参数1:网格大小
    //    参数2:特效持续的时间
//    CCActionInterval * turnOffTiles = CCTurnOffTiles::create(ccg(16, 12), 3);
//    sp->runAction(turnOffTiles);

//    CCJumpTiles3D
//    作用:跳动的方格特效
//    参数1:跳动的次数
//    参数2:网格的大小
//    参数3:特效持续的时间
//    CCActionInterval * jumpTiles3D = CCJumpTiles3D::create(1, 30, ccg(15, 10), 2);
//    sp->runAction(jumpTiles3D);
    
//    CCSplitRows
//    作用:分多行消失特效
//    参数1:行数
//    参数2:特效持续的时间
//    CCActionInterval *splitRows= CCSplitRows::create(20, 2);
//    sp->runAction(splitRows);

//    CCSplitCols
    //    作用:分多列消失特效
    //    参数1:列数
    //    参数2:特效持续的时间
//    CCActionInterval * splitCols = CCSplitCols::create(20, 2);
//    sp->runAction(splitCols);
    
//    CCPageTurn3D
//    作用:3D翻页特效
//    参数1:网格大小
//    参数2:特效持续的时间
    CCActionInterval * pageTurn3D = CCPageTurn3D::create(ccg(15, 10), 3);
    sp->runAction(pageTurn3D);
    
    
    
    return true;
}
//这个是光晕效果的参数 
CCSpriteBatchNode *m_Batchnode=CCSpriteBatchNode::create("bullet.png");ccBlendFunc cb={GL_SRC_ALPHA,GL_ONE};  
//将光晕效果加入
m_Batchnode->setBlendFunc(cb); 
//最后实例化一个 
CCSpriteBatchNode里this->addChild(m_Batchnode);  
//缓存中取出W1.png图片,这个图片是在plist文件中所在的<key>标签里面的 
CCSpriteCCSprite *bullet=CCSprite::createWithSpriteFrameName("W1.png");  
//记得不是用this->addChild而是用m_Batchnode->addChild(bullet);  
//这样就能有光晕效果啦 主要是理解CCSpriteBatchNode 
bullet->setPosition(ccp(x,y));
m_Batchnode->addChild(bullet);

//1. 不断旋转
CCRotateBy* rotate = CCRotateBy::actionWithDuration(1, 360);
CCRepeatForever* repeatRotate = CCRepeatForever::actionWithAction(rotate);

//2. 上升消失
CCMoveBy* move = CCMoveBy::actionWithDuration(2, ccp(0,200));
CCFadeOut* fadeOut = CCFadeOut::actionWithDuration(2);
CCFiniteTimeAction* fadeOutAct = CCSpawn::actions(move,fadeOut,NULL);

//3.贝赛而曲线
ccBezierConfig bezier;
bezier.controlPoint_1 = ccp(100,200);
bezier.controlPoint_2 = ccp(200, -100);
bezier.endPosition = ccp(400, 100);
CCBezierBy* bezierBy = CCBezierBy::actionWithDuration(5.0, bezier);

//4. 变色
CCTintTo* tint1 = CCTintTo::actionWithDuration(1.5, 255, 0, 0);
CCTintTo* tint2 = CCTintTo::actionWithDuration(1.5, 0, 255, 255);
CCTintTo* tint3 = CCTintTo::actionWithDuration(1.5, 0, 255, 0);
CCFiniteTimeAction* tintActions = CCSequence::actions(tint1,tint2,tint3,NULL);
CCRepeatForever* repeatTint = CCRepeatForever::actionWithAction((CCActionInterval*)tintActions);

//5.闪烁
CCBlink* blink = CCBlink::actionWithDuration(5, 25);

//6.动作(动画)结束后,调用某函数
CCFadeOut* fadeOut = CCFadeOut::actionWithDuration(0.8);
CCCallFunc* endCall = CCCallFunc::actionWithTarget(starSprite, callfunc_selector(FlashingMeteors::removeFromParentAndCleanup));
CCFiniteTimeAction* acts = CCSequence::actions(fadeOut,endCall, NULL);
starSprite->runAction(acts);