Cocos2d-x学习笔记(二十二)之 网格动作

  网格动作类似于特效,可以实现翻转、抖动、震荡、水波纹等效果。Cocos2D-x中,网格类的基类CCGridBase有两个子类,即CCGrid3D和CCTiledGrid3D。这两个类的共同点是,网格的每个子块都可以分离出来,CCGridBase的继承关系如下:

  CCGrid3D、CCTiledGrid3D-->CCGridBase-->CCObject。

  网格没有什么直接应用的场合,只要明白CCGrid3D和CCTiledGrid3D,并且网格动作是基于网格的即可。运行网格动作的节点好像被分成了大小相同的很多矩形,通过这些矩形的动作形成整体动作,这些矩形就好像形成了一个矩阵。16x12的网格将会运行的非常快,但是效果并不是非常好。32x24的网格看起来非常棒,但是在有些时候运行起来不会太快。

  使用网格之前需要取消OpenGL的深度检测,调用如下语句:

1 CCDirector::sharedDirector()->setDepthTest( false );

  网格动作的使用和普通动作一样,可以使用runAction来运行动作,具体的动作如下:

  CCShaky3D:格扭曲,create函数的参数是扭曲范围、是否扭曲z轴、格的大小、间隔时间。

  CCWaves3D:波浪式,create函数的参数是波浪数、振幅、格的大小、间隔时间。

  CCFlipX3D:x轴翻转,create函数的参数为时间。

  CCFlipY3D:y轴翻转,create函数的参数为时间。

  CCLens3D:放大镜,create函数的参数是中心点、半径、格的大小、时间。

  CCRipple3D:水波,create函数的参数是中心点、半径、波浪数、振幅、格的大小、时间。

  CCLiquid:流体效果,create函数的参数是波浪数、振幅、格的大小、时间。

  CCWaves:扭曲波浪,create函数的参数是波浪数、振幅、水平sin、竖直sin、格的大小、时间。

  CCTwirl:扭曲,create函数的参数是中心点、扭曲数、振幅、格的大小、时间。

  CCShakyTiles3D:水波,create函数的参数是范围、是否z轴、格的大小、时间。

  CCShatteredTiles3D:破碎歪曲,create函数的参数是范围、是否z轴、格的大小、时间。

  CCShuffleTiles:打散,参数是随机数种子、格的大小、时间。

  CCFadeOutTRTiles:顶右淡出,参数是格的大小、时间。

  CCFadeOutBLTiles:底左淡出,参数是格的大小、时间。

  CCFadeOutUpTiles:向上淡出,参数是格的大小、时间。

  CCFadeOutDownTiles:向下淡出,参数是格的大小、时间。

  CCTurnOffTiles:方块消失,参数是随机数种子、格的大小、时间。

  CCWavesTiles3D:方块波浪,参数是波浪数、振幅、分格的大小、间隔时间。

  CCJumpTiles3D:跳跃方块,参数是跳跃次数、振幅、分格的大小、间隔时间。

  CCSplitRows:切开行,参数是函数、时间。

  CCSplitCols:切开列,参数是函数、时间。

  CCPageTurn3D:翻页,参数是格的大小、时间。

  在使用网格时,网格动作结束后需要把网格清空,使用示例如下:

1 //获得父节点
2 CCNode* ss = getChildByTag( kTagBg );
3 
4 //检测父节点是否还有动作,如果没有并且网格不为空
5 if(ss->numberOfRunningActions() == 0 && ss->getGrid() != NULL)
6 {
7     //调用setGrid函数并传入空参数(NULL)便可清空网格,使用schedule一直检测调用这段代码就可以实现清空无动作的节点网格。
8     ss->setGrid( NULL );  
9 }

 

posted @ 2013-08-27 11:36  【Winco】  阅读(1598)  评论(0编辑  收藏  举报