1. 程式人生 > >cocos2dx[2.x](17)--擴充套件動作CCGridAction

cocos2dx[2.x](17)--擴充套件動作CCGridAction

【嘮叨】

CCActionInterval除了上節講的基本動作外,還有其他許多的擴充套件動作CCGridAction。顧名思義,就是將顯示的內容分為一塊塊小格子,然後在格子的基礎上進行一些圖形的變換。

【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、波動特效
這裡寫圖片描述
這裡寫圖片描述