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];
~~~