COCOS2D中的特效
最后更新于:2022-04-01 20:15:14
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];
~~~
';