cocos2dx[2.x](17)--擴充套件動作CCGridAction
阿新 • • 發佈:2019-01-30
【嘮叨】
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、波動特效