cocos2dx[2.x](17)--扩展动作CCGridAction

【唠叨】

CCActionInterval除了上节讲的基本动作外,还有其他许多的扩展动作CCGridAction。顾名思义,就是将显示的内容分为一块块小格子,然后在格子的基础上进行一些图形的变换。

【致谢】
http://gl.paea.cn/contents/77054db9872b09b1.html

【3.x】

(1)去掉“CC”
(2)其他变化不大。

【CCGridAction】

CCGridAction有两个子类:CCGrid3DAction、CCTiledGrid3DAction。而我们关注的就是这两个子类所派生出来的一些格子动作。
(1)CCGrid3DAction:      是基于格子的动作。
(2)CCTiledGrid3DAction: 是基于网格的动作。

扩展知识:格子和网格的区别在于对CCNode对象的显示内容划分方式不同。网格代表了更小、更多的格子数目。关于这点,可以不需要深入了解,只要会用即可。

1、CCGrid3DAction

CCGrid3DAction:是基于格子的动作。
常用动作如下:
/**
 *      晃动特效
 */
    //3D晃动         (时间, 网格大小, 晃动范围, Z轴是否晃动);
    CCShaky3D::create(float duration, const CCSize& gridSize, int range, bool shakeZ);


/**
 *      液体波动特效
 */
    //波动         (时间, 网格大小, 波动速度, 振幅, 是否水平波动, 是否垂直波动);
    CCWaves::create(float duration, const CCSize& gridSize, unsigned int waves, float amplitude, bool horizontal, bool vertical); 

    //3D波动         (时间, 网格大小, 波动速度, 振幅);
    CCWaves3D::create(float duration, const CCSize& gridSize, unsigned int waves, float amplitude); 

    //液体流动      (时间, 网格大小, 速度, 振幅); 
    CCLiquid::create(float duration, const CCSize& gridSize, unsigned int waves, float amplitude); 

    //3D水波          (时间, 网格大小, 坐标, 半径, 速度, 振幅);
    CCRipple3D::create(float duration, const CCSize& gridSize, const CCPoint& position, float radius, unsigned int waves, float amplitude); 


/**
 *      翻转特效
 */
    //X轴左右翻转    (时间);
    CCFlipX3D::create(float duration);

    //Y轴上下翻转    (时间);
    CCFlipY3D::create(float duration);


/**
 *      凸透镜特效
 */
    //凸透镜        (时间, 网格大小, 圆心坐标, 圆半径);
    CCLens3D::create(float duration, const CCSize& gridSize, const CCPoint& position, float radius);


/**
 *      扭曲特效
 */
    //扭曲         (时间, 网格大小, 坐标, 扭曲次数, 振幅);
    CCTwirl::create(float duration, const CCSize& gridSize, CCPoint position, unsigned int twirls, float amplitude);


/**
 *      书本翻页特效
 */ 
    //翻页消失          (时间, 网格大小);
    CCPageTurn3D::create(float duration, const CCSize& gridSize);
使用方法:
    //晃动特效
    CCShaky3D::create(10, CCSizeMake(1,1), 10, true);

    //液体波动特效
    CCWaves::create(10, CCSizeMake(1,1), 100, 10, true, true);
    CCWaves3D::create(10, CCSizeMake(1,1), 100, 10);
    CCLiquid::create(10, CCSizeMake(10,10), 10, 10);
    CCRipple3D::create(10, CCSizeMake(100,100), ccp(200,200), 50, 50, 50);

    //翻转特效
    CCFlipX3D::create(1);
    CCFlipY3D::create(1);

    //凸透镜特效
    CCLens3D::create(10, CCSizeMake(100,100), ccp(100,100), 150);

    //扭曲特效
    CCTwirl::create(10, CCSizeMake(10,10), ccp(200,200), 5, 10);

    //书本翻页消失
    CCPageTurn3D::create(10, CCSizeMake(20,20));

2、CCTiledGrid3DAction

CCTiledGrid3DAction:是基于网格的动作。
常用动作如下:
/**
 *      晃动特效
 */
    //3D网格晃动          (时间, 网格大小, 晃动范围, Z轴是否晃动);
    CCShakyTiles3D* create(float duration, const CCSize& gridSize, int nRange, bool bShakeZ);


 /**
  *     波动特效
  */
    //3D瓷砖波动效果      (时间, 网格大小, 波动速度, 振幅); 
    CCWavesTiles3D* create(float duration, const CCSize& gridSize, unsigned int waves, float amplitude);


/**
 *      跳动特效
 */
    //网格跳动           (时间, 网格大小, 次数, 振幅);
    CCJumpTiles3D* create(float duration, const CCSize& gridSize, unsigned int numberOfJumps, float amplitude);


/**
 *      破碎特效
 */
    //格子破碎                (时间, 网格大小, 晃动范围, Z轴是否晃动); 
    CCShatteredTiles3D* create(float duration, const CCSize& gridSize, int nRange, bool bShatterZ);


/**
 *      洗牌特效
 */
    //格子随机洗牌        (时间, 网格大小, 随机数);
    CCShuffleTiles* create(float duration, const CCSize& gridSize, unsigned int seed);


/**
 *      消失特效
 */
    //右上到左下,剥落网格   (时间, 网格大小); 
    CCFadeOutBLTiles* create(float duration, const CCSize& gridSize);

    //左下到右上,剥落网格   (时间, 网格大小); 
    CCFadeOutTRTiles* create(float duration, const CCSize& gridSize);

    //上到下,一行行剥落网格   (时间, 网格大小); 
    CCFadeOutDownTiles* create(float duration, const CCSize& gridSize);

    //下到上,一行行剥落网格 (时间, 网格大小); 
    CCFadeOutUpTiles* create(float duration, const CCSize& gridSize);

    //网格随机一个个消失  (时间, 网格大小, 随机数);
    CCTurnOffTiles* create(float duration, const CCSize& gridSize, unsigned int seed = 0);

    //多行消失(水平) (时间, 行数); 
    CCSplitRows* create(float duration, unsigned int nRows);

    //多行消失(垂直) (时间, 列数); 
    CCSplitCols* create(float duration, unsigned int nCols);

    使用方法:

    //晃动
    CCShakyTiles3D::create(10, CCSizeMake(1,1), 10, true);

    //波动
    CCWavesTiles3D::create(10, CCSizeMake(1,1), 10, 10);

    //跳动
    CCJumpTiles3D::create(10, CCSizeMake(5,5), 5, 10);

    //破碎
    CCShatteredTiles3D::create(10, CCSizeMake(1,1), 100, true);

    //洗牌
    CCShuffleTiles::create(10, CCSizeMake(10,10), 100);

    //消失
    CCFadeOutBLTiles::create(10, CCSizeMake(10,10));
    CCFadeOutTRTiles::create(10, CCSizeMake(20,20));
    CCFadeOutDownTiles::create(10, CCSizeMake(20,20));
    CCFadeOutUpTiles::create(10, CCSizeMake(20,20));
    CCTurnOffTiles::create(10, CCSizeMake(20,20), 100);
    CCSplitRows::create(10, 10);
    CCSplitCols::create(10, 10);

3、关于网格大小

发现上面动作的创建都带有“网格大小”这个参数。那这个参数是什么意思呢?
网格大小是一个CCSize类,即指定了宽度width、高度height。而这里的意义并不是指宽度和高度。而是指屏幕的宽和高被划分的个数。
如网格大小为CCSizeMake(5,10)。那么宽被5等分,高被10等分。
如下图所示:

这里写图片描述
4、格子与网格

格子与网格的区别,看完下面的几张图就明白了:
4.1、晃动特效

这里写图片描述
这里写图片描述
4.2、波动特效
这里写图片描述
这里写图片描述

【代码实战】
自己参考官方的TestCpp项目。
转载网址:http://blog.51cto.com/shahdza/1546641

猜你喜欢

转载自blog.csdn.net/qq_34240791/article/details/80252804
今日推荐