特效概念
特效是让精灵(CCSprite)执行某种特殊的效果。
其实,特效也是一种动画!因为,仔细查看各种特效类的继承方式,会发现:
特效类,继承自CCGrid3DAction,又继承自CCGridAction,又继承自CCActionInterval。
可见,可以把特效归位于CCActionInterval动画系列。
但是,为什么要把特效与动画区分呢?因为,特效是基于网格属性来进行的。
如何区分动画与特效?简单的将,当使用到网格属性时,为特效。(先简单的,这么理解吧)
网格属性
网格,是将精灵切割成为指定块数的矩形小块。当执行特效的时候,特效就是以网格切割的每个小块做为单位来执行的。
网格切割的块数越多,那么执行特效的细腻度也就越细腻,特效就越酷炫;反之,越粗糙,越生硬。
如:ccg(100,100),将精灵切割成100*100的网格。
CCWaves
id effect = [CCSequence actions:[CCWaves actionWithWaves:10 amplitude:10horizontal:YES vertical:YES grid:ccg(100,100) duration:100], [CCStopGrid action],nil];
[mySprite runAction:effect];
CCWaves3D
修改网格属性,产生类似3D的波动效果
id effectWaves3D = [CCWaves3D actionWithWaves:100 amplitude:100 grid:ccg(100,120)duration:5];
[mySprite runAction:effectWaves3D];
等等,还有很多的CCXXX3D效果。
我打算无耻的直接Contrl+C,Contrl+V了,因为,相似度太高了,为了保持特效的完整性。呵呵~~
// CCFlipX3D:通过更改节点对象的网格属性,让节点对象沿着水平方向产生三维翻转效果。需要注意的是,虽然这里提供了ccg参数,但默认情况下只能使用ccg(1,1)。
id effectFlipX3D = [CCFlipX3D actionWithSize:ccg(1,1) duration:2];
id effectFlipX3Dback =[effectFlipX3D reverse];
[mySprite runAction:[CCSequence actions:effectFlipX3D,[CCDelayTimeactionWithDuration:2], effectFlipX3Dback,nil]];
// CCFlipY3D: 通过更改节点对象的网格属性,让节点对象沿着垂直方向产生三维翻转效果。
id effectFlipY3D = [CCFlipY3D actionWithDuration:2];
id effectFlipY3Dback = [effectFlipY3D reverse];
[mySprite runAction:[CCSequence actions:effectFlipY3D,[CCDelayTimeactionWithDuration:2], effectFlipY3Dback, nil]];
// CCLens3D: 通过更改节点对象的网格属性,让节点对象产生类似镜面三维效果。
id effectLens3D = [CCLens3D actionWithPosition:ccp(size.width/2,size.height/2)radius:100 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:160grid:ccg(32,24) duration:15];
[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:YESgrid:ccg(100,12) duration:5];
[mySprite runAction:effectShatteredTiles3D];
// CCShakyTiles3D:通过更改节点对象的网格属性,让节点对象及其瓦片产生类似晃动的三维效果。
id effectShakyTiles3D = [CCShakyTiles3D actionWithRange:5 shakeZ:YESgrid: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:8];
id fadeouttrBack = [effectFadeOutTRTiles reverse];
id trDelay = [CCDelayTime actionWithDuration:2];
[mySprite runAction:[CCSequenceactions: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:[CCSequenceactions:effectFadeOutBLTiles,blDelay,fadeoutblBack, nil]];
// CCFadeOutUpTiles:通过更改节点对象的网格属性,让节点对象及其瓦片产生自下而上淡出的效果。
id effectFadeOutUpTiles = [CCFadeOutUpTiles actionWithSize:ccg(100,100)duration:5];
id fadeoutupBack = [effectFadeOutUpTiles reverse];
id upDelay = [CCDelayTime actionWithDuration:2];
[mySprite runAction:[CCSequenceactions: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:[CCSequenceactions: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:[CCSequenceactions:effectTurnOffTiles,turnoffDelay,turnoffBack, nil]];
// CCWavesTiles3D: 通过更改节点对象的网格属性,让节点对象及其瓦片产生类似三维波浪的效果。
id effectWavesTiles3D = [CCWavesTiles3D actionWithWaves:10 amplitude:120grid:ccg(15,12) duration:5];
[ball runAction:effectWavesTiles3D];
// CCJumpTiles3D:通过更改节点对象的网格属性,瓦片产生跳动的三维效果。
id effectJumpTiles3D = [CCJumpTiles3D actionWithJumps:10 amplitude:30grid:ccg(12,12) duration:5];
[mySprite runAction:effectJumpTiles3D];
// CCSplitRows:通过更改节点对象的网格属性,让节点对象产生分行分割并消失的效果。
id effectSplitRows = [CCSplitRows actionWithRows:100 duration:5];
[mySprite runAction:effectSplitRows];
// CCSplitCols:通过更改节点对象的网格属性,让节点对象产生分列分割并消失的效果。
id effectSplitCols = [CCSplitCols actionWithCols:10 duration:5];
[mySprite runAction:effectSplitCols];
// CCPageTurn3D:通过更改节点对象的网格属性,让节点对象产生三维翻页的效果。
id effectPageTurn3D = [CCPageTurn3D actionWithSize:ccg(150,120) duration:5];
[mySprite runAction:effectPageTurn3D];
希望对你有所帮助!