基礎的動做是對節點總體進行移動,變形等操做,網格特效的原理是將節點分割成多個尺寸相同的網格,根據改變每一個網格塊的屬性使總體節點產生3D的效果。node
在cocos2d-x中,v3的版本新引入了一個類NodeGrid,專門用來包裝網格的特效,示例以下:動畫
//獲取屏幕尺寸 Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); //加載精靈 auto sprite = Sprite::create("HelloWorld.png"); sprite->setPosition(Vec2(visibleSize.width/2+origin.x, visibleSize.height/2+origin.y)); //建立網格特效包裝類 NodeGrid * nodeg = NodeGrid::create(); nodeg->setPosition(Vec2::ZERO); //添加播放特效的精靈 nodeg->addChild(sprite); this->addChild(nodeg); //參數的含義 分別是 執行時間,切分的網格大小,波浪次數,波浪大小 Waves3D * ani3d = Waves3D::create(2, Size(15, 15), 6, 4); //執行特效 nodeg->runAction(ani3d);
static Waves3D* create(float duration, const Size& gridSize, unsigned int waves, float amplitude);ui
建立波浪3D效果,參數含義爲:執行時間,網格尺寸,波浪次數,波浪大小this
static FlipX3D* create(float duration);spa
以x爲軸進行翻轉3d
static FlipY3D* create(float duration);code
以y爲軸進行翻轉ip
static Lens3D* create(float duration, const Size& gridSize, const Vec2& position, float radius);get
建立鏡頭的3D效果,參數爲:執行時間,網格大小,鏡頭中心,鏡頭半徑it
static Ripple3D* create(float duration, const Size& gridSize, const Vec2& position, float radius, unsigned int waves, float amplitude);
建立波紋特效,參數爲:執行時間,網格大小,波紋中心,波紋半徑,波紋計數,振幅
static Shaky3D* create(float initWithDuration, const Size& gridSize, int range, bool shakeZ);
建立震動特效,參數爲:執行時間,網格大小,震動範圍,是否波動z軸
static Liquid* create(float duration, const Size& gridSize, unsigned int waves, float amplitude);
建立液體特效,參數爲:執行時間,網格尺寸,流動次數,幅度
static Waves* create(float duration, const Size& gridSize, unsigned int waves, float amplitude, bool horizontal, bool vertical);
建立平面波紋特效,參數爲:執行時間,網格尺寸,波紋次數,波紋振幅,開關橫向波紋,開關縱向波紋
static Twirl* create(float duration, const Size& gridSize, Vec2 position, unsigned int twirls, float amplitude);
建立扭曲旋轉的特效,參數爲:執行時間,網格尺寸,扭曲旋轉中心,旋轉次數,旋轉幅度
專一技術,熱愛生活,交流技術,也作朋友。
——琿少 QQ羣:203317592