COCOS2D中的特效

1.关于特效的种类和使用

-(id) init
{
	// always call "super" init
	// Apple recommends to re-assign "self" with the "super"s" return value
	if( (self=[super init]) ) {
		
        //  创建并初始化精灵对象
        CCSprite *mySprite = [CCSprite spriteWithFile:@"panda.png"];
        CCSprite *ball = [CCSprite spriteWithFile:@"ball.png"];
        
        
        //  获取屏幕大小
        CGSize size = [CCDirector sharedDirector].winSize;
        mySprite.position = ccp(size.width/2,size.height/2);
        ball.position = ccp(200+size.width/2,size.height/2);
        
        
        //  将精灵对象添加为当前层的子节点
        [self addChild:mySprite];
        [self addChild:ball];
        
        //    下面是各种特效动作的实现代码
        //    如果要查看某种特效动作的效果,可以取消对相应代码的注释
        
        //    CCWaves:通过更改节点对象的网格属性,让节点对象产生类似波动的效果。
        
            id effect = [CCWaves actionWithWaves:10 amplitude:50 horizontal:YES vertical:YES grid:ccg(10,10) duration:5];
            [mySprite runAction:effect];
        
        //    CCWaves3D:通过更改节点对象的网格属性,让节点对象产生类似三维波动的效果。
            id effectWaves3D = [CCWaves3D actionWithWaves:10 amplitude:40 grid:ccg(12,12) duration:5];
            [mySprite runAction:effectWaves3D];
        
        
        //    CCFlipX3D:通过更改节点对象的网格属性,让节点对象沿着水平方向产生三维翻转效果。需要注意的是,虽然这里提供了ccg参数,但默认情况下只能使用ccg(1,1)。
        //    id effectFlipX3D = [CCFlipX3D actionWithSize:ccg(1,1) duration:2];
        //    id effectFlipX3Dback =[effectFlipX3D reverse];
        //    [mySprite runAction:[CCSequence actions:effectFlipX3D,[CCDelayTime actionWithDuration:2], effectFlipX3Dback,nil]];
        
        
        //    CCFlipY3D: 通过更改节点对象的网格属性,让节点对象沿着垂直方向产生三维翻转效果。
        //    id effectFlipY3D = [CCFlipY3D actionWithDuration:2];
        //    id effectFlipY3Dback = [effectFlipY3D reverse];
        //    [mySprite runAction:[CCSequence actions:effectFlipY3D,[CCDelayTime actionWithDuration:2], effectFlipY3Dback, nil]];
        
        //    CCLens3D: 通过更改节点对象的网格属性,让节点对象产生类似镜面三维效果。
        //    id effectLens3D = [CCLens3D actionWithPosition:ccp(size.width/2,size.height/2) radius:240 grid:ccg(15,10) duration:3];
        //    [mySprite runAction: effectLens3D];
        
        //    CCRipple3D: 通过更改节点对象的网格属性,让节点对象产生类似水面涟漪的三维波动效果。
        //    id effectRipple3D = [CCRipple3D  actionWithPosition:ccp(size.width/2,size.height/2) radius:240 waves:4 amplitude:160 grid:ccg(32,24) duration:5];
        //    [mySprite runAction:effectRipple3D];
        
        //    CCShaky3D: 通过更改节点对象的网格属性,让节点对象产生类似三维摇晃效果。
        //    id effectShaky3D = [CCShaky3D actionWithRange:5 shakeZ:YES grid:ccg(10,10) duration:3];
        //    [mySprite runAction:effectShaky3D];
        
        //    CCLiquid: 通过更改节点对象的网格属性,让节点对象产生类似液体流动的效果。
        //    id effectLiquid = [CCLiquid actionWithWaves:10 amplitude:22 grid:ccg(16,10) duration:5];
        //    [ball runAction:effectLiquid];
        
        //    CCTwirl: 通过更改节点对象的网格属性,让节点对象产生漩涡效果。
        //    id effectTwirl = [CCTwirl actionWithPosition:ccp(size.width/2, size.height/2) twirls:1 amplitude:2.5f grid:ccg(12,8) duration:5];
        //    [ball runAction:effectTwirl];
        
        //    CCShatteredTiles3D:通过更改节点对象的网格属性,让节点对象及其瓦片产生类似粉碎的三维效果。
        //    id effectShatteredTiles3D = [CCShatteredTiles3D actionWithRange:5 shatterZ:YES grid:ccg(16,12) duration:5];
        //    [mySprite runAction:effectShatteredTiles3D];
        
        //    CCShakyTiles3D:通过更改节点对象的网格属性,让节点对象及其瓦片产生类似晃动的三维效果。
        //    id effectShakyTiles3D = [CCShakyTiles3D actionWithRange:5 shakeZ:YES grid:ccg(16,12) duration:5];
        //    [mySprite runAction:effectShakyTiles3D];
        
        //    CCShuffleTiles:通过更改节点对象的网格属性,让节点对象及其瓦片产生类似洗牌的效果。
        //    id effectShuffleTiles = [CCShuffleTiles actionWithSeed:25 grid:ccg(16,12) duration:3];
        //    id shuffleBack = [effectShuffleTiles reverse];
        //    id delay = [CCDelayTime actionWithDuration:2];
        //    [mySprite runAction:[CCSequence actions:effectShuffleTiles,delay,shuffleBack, nil]];
        
        //    CCFadeOutTRTiles: 通过更改节点对象的网格属性,让节点对象及其瓦片产生从左下角到右上角淡出的效果。
        //    id effectFadeOutTRTiles = [CCFadeOutTRTiles actionWithSize:ccg(16,12) duration:5];
        //    id fadeouttrBack = [effectFadeOutTRTiles reverse];
        //    id trDelay = [CCDelayTime actionWithDuration:2];
        //    [mySprite runAction:[CCSequence actions:effectFadeOutTRTiles,trDelay,fadeouttrBack, nil]];
        
        //    CCFadeOutBLTiles: 通过更改节点对象的网格属性,让节点对象及其瓦片产生从右上角到左下角淡出的效果。
        //    id effectFadeOutBLTiles = [CCFadeOutBLTiles actionWithSize:ccg(16,12) duration:5];
        //    id fadeoutblBack = [effectFadeOutBLTiles reverse];
        //    id blDelay = [CCDelayTime actionWithDuration:2];
        //    [mySprite runAction:[CCSequence actions:effectFadeOutBLTiles,blDelay,fadeoutblBack, nil]];
        
        //    CCFadeOutUpTiles:通过更改节点对象的网格属性,让节点对象及其瓦片产生自下而上淡出的效果。
        //    id effectFadeOutUpTiles = [CCFadeOutUpTiles actionWithSize:ccg(10,10) duration:5];
        //    id fadeoutupBack = [effectFadeOutUpTiles reverse];
        //    id upDelay = [CCDelayTime actionWithDuration:2];
        //    [mySprite runAction:[CCSequence actions:effectFadeOutUpTiles,upDelay,fadeoutupBack, nil]];
        
        //    CCFadeOutDownTiles:通过更改节点对象的网格属性,让节点对象及其瓦片产生自上而下淡出的效果。
        //    id effectFadeOutDownTiles = [CCFadeOutDownTiles actionWithSize:ccg(10,10) duration:5];
        //    id fadeoutdownBack = [effectFadeOutDownTiles reverse];
        //    id downDelay = [CCDelayTime actionWithDuration:2];
        //    [mySprite runAction:[CCSequence actions:effectFadeOutDownTiles,downDelay,fadeoutdownBack, nil]];
        
        
        //    CCTurnOffTiles:通过更改节点对象的网格属性,产生瓦片逐渐消失的效果。
        //    id effectTurnOffTiles = [CCTurnOffTiles actionWithSeed:5 grid:ccg(10,10) duration:5];
        //    id turnoffBack = [effectTurnOffTiles reverse];
        //    id turnoffDelay = [CCDelayTime actionWithDuration:2];
        //    [mySprite runAction:[CCSequence actions:effectTurnOffTiles,turnoffDelay,turnoffBack, nil]];
        
        //    CCWavesTiles3D: 通过更改节点对象的网格属性,让节点对象及其瓦片产生类似三维波浪的效果。
        //    id effectWavesTiles3D = [CCWavesTiles3D actionWithWaves:10 amplitude:120 grid:ccg(15,12) duration:5];
        //    [ball runAction:effectWavesTiles3D];
        
        //    CCJumpTiles3D:通过更改节点对象的网格属性,瓦片产生跳动的三维效果。
        //    id effectJumpTiles3D = [CCJumpTiles3D actionWithJumps:10 amplitude:30 grid:ccg(12,12) duration:5];
        //    [mySprite runAction:effectJumpTiles3D];
        
        //    CCSplitRows:通过更改节点对象的网格属性,让节点对象产生分行分割并消失的效果。
        //    id effectSplitRows = [CCSplitRows actionWithRows:10 duration:5];
        //    [mySprite runAction:effectSplitRows];
        
        //    CCSplitCols:通过更改节点对象的网格属性,让节点对象产生分列分割并消失的效果。
        //    id effectSplitCols = [CCSplitCols actionWithCols:10 duration:5];
        //    [mySprite runAction:effectSplitCols];
        
        //    CCPageTurn3D:通过更改节点对象的网格属性,让节点对象产生三维翻页的效果。
        //    id effectPageTurn3D = [CCPageTurn3D actionWithSize:ccg(15,12) duration:5];
        //    [mySprite runAction:effectPageTurn3D];
        
      
	}
	return self;
}

2.让特效恢复

  //    让节点对象在特效动作结束后恢复原貌
        
        id effect = [CCSequence actions:[CCWaves actionWithWaves:10 amplitude:30 horizontal:YES vertical:YES grid:ccg(10,10) duration:5], [CCStopGrid action], nil];
        [mySprite runAction:effect];

3.cocos2d中与动画有关的类

-(id) init
{
	// always call "super" init
	// Apple recommends to re-assign "self" with the "super"s" return value
	if( (self=[super init]) ) {
		
        //以下的内容会在此处添加代码,以生成动画效果。
        
        //  简单的动画实现方式
        
        //  创建精灵对象并将其添加为当前层的子节点
        
           CGSize size = [CCDirector sharedDirector].winSize;
        
           CCSprite *mySprite = [CCSprite spriteWithFile:@"pandawalk1.png"];
            mySprite.position = ccp(size.width/2,size.height/2);
            [self addChild:mySprite];
        
        //  创建CCAnimation动画,指定动画帧的内容
        
            CCAnimation *anim = [CCAnimation animation];
            [anim addFrameWithFilename:@"pandawalk1.png"];
            [anim addFrameWithFilename:@"pandawalk2.png"];
            [anim addFrameWithFilename:@"pandawalk3.png"];
        
        //  创建CCAnimate动画动作,并让精灵对象执行
        
            id animAction = [CCAnimate actionWithDuration:0.5f animation:anim restoreOriginalFrame:YES];
            id repeatanimAction = [CCRepeatForever actionWithAction:animAction];
            [mySprite runAction:repeatanimAction];
文章导航