Action effects in Cocos2d-X, Cocos2d-X action Effects
The Cocos2d-X provides a rich set of action Effects
For example, grid Animation
Distorted effects
3D tile fluctuation Effect
Program code:
# Include "ActionEffect. h "# include" HelloWorldScene. h "static const char * _ actionName [] = {" CCFadeOutBLTiles "," CCFadeOutDownTiles "," Hangzhou "," CCFlipX3D "," CCFlipY3D "," CCJumpTiles3D ", "CCLens3D", "CCLiquid", "medium", "CCRipple3D", "CCShaky3D", "medium", "medium", "CCShuffleTiles", "CCSplitCols", "CCSplitRows ", "CCTurnOffTiles", "CCTwirl", "CCWaves", "CCWaves3D", "CCWavesTiles3D"}; CCScene * ActionEffect: scene () {CCScene * s = CCScene :: create (); ActionEffect * layer = ActionEffect: create (); s-> addChild (layer); return s;} bool ActionEffect: init () {CCLayer :: init (); CCSize winSize = CCDirector: shareddire()-> getWinSize (); CCNode * c = CCNode: create (); _ c = c; int actionCount = sizeof (_ actionName)/sizeof (* _ actionName); for (int I = 0; I <actionCount; I ++) {/* CCSprite * bg = CCSprite:: create ("HelloWorld.png"); c-> addChild (bg); bg-> setPosition (ccp (winSize. width/2 + I * winSize. width, winSize. height/2); */CCLayerColor * layer; if (I % 2 = 0) {layer = CCLayerColor: create (ccc4 (192,192,192,255), winSize. width, winSize. height);} else {layer = CCLayerColor: create (ccc4 (128,128,128,255), winSize. width, winSize. height);} c-> addChild (layer); layer-> setPosition (ccp (I * winSize. width, 0);/* Set Title */const char * title = _ actionName [I]; CCLabelTTF * label = CCLabelTTF: create (title, "Arial ", 36); layer> addChild (label, 1000); label> setPosition (ccp (winSize. width/2, winSize. height-80);} CCScrollView * view = CCScrollView: create (winSize, c); view-> setDirection (kccscrollviewdirehorhorizontal); view-> setContentSize (CCSize (winSize. width * actionCount, winSize. height); addChild (view); c-> setPositionX (1-actionCount) * winSize. width); // can touch setTouchEnabled (true); setTouchMode (kCCTouchesOneByOne); return true;} bool ActionEffect: ccTouchBegan (CCTouch *, CCEvent *) {return true ;} void ActionEffect: testAction (int idx, CCLayerColor * layer) {CCSize winSize = CCDirector: sharedDirector ()-> getWinSize (); CCSprite * sprite = (CCSprite *) layer-> getUserObject (); if (sprite = NULL) {// sprite = CCSprite: create ("background3.png"); sprite = CCSprite :: create ("HelloWorld.png"); layer-> setUserObject (sprite); layer-> addChild (sprite);} const char * an = _ actionName [idx]; CCAction * action = NULL; sprite-> setPosition (ccp (winSize. width/2, winSize. height/2); CCMoveBy * moveBy = CCMoveBy: create (4, ccp (0, sprite-> getContentSize (). height/2-winSize. height/2); // the top right to the bottom left of the grid disappears // The first parameter: Time // The second parameter: grid size if (an = "CCFadeOutBLTiles ") {action = CCFadeOutBLTiles: create (5, CCSize (16, 12);} // collapse and disappear from top to bottom of the grid // The first parameter: Time // The second parameter: grid size if (an = "CCFadeOutDownTiles") {action = CCFadeOutDownTiles: create (5, CCSize (16, 12 ));} // The grid disappears from bottom left to top right if (an = "CCFadeOutTRTiles") {action = CCFadeOutTRTiles: create (5, CCSize (16, 12 ));} // The grid disappears from bottom to top if (an = "CCFadeOutUpTiles") {action = CCFadeOutUpTiles: create (5, CCSize (16, 12 ));} // create an X axis 3D reversal effect if (an = "CCFlipX3D") // affects touch {action = CCFlipX3D: create (5 );} // create an if (an = "CCFlipY3D") {action = CCFlipY3D: create (5 );;} // grid beating effect if (an = "CCJumpTiles3D") {// parameter: time, grid size, times, amplitude action = CCJumpTiles3D: create (5, CCSize (16, 12), 56, 5.0f);} // convex lens effect if (an = "CCLens3D") {// parameter: time, grid size, Center Coordinate, circle radius action = CCLens3D: create (5, CCSize (16, 12), ccp (winSize. width/2, winSize. height/2), 100);} // liquid effect if (an = "CCLiquid") {// parameter: time, grid size, speed, amplitude action = CCLiquid :: create (56, CCSize (16, 12), 56, 2.0f);} // if (an = "CCPageTurn3D") {action = CCPageTurn3D :: create (5, CCSize (16, 12);} // create a 3D water wave effect if (an = "CCRipple3D") {// parameter: time, grid size, coordinates, radius, speed, amplitude action = CCRipple3D: create (10, CCSize (16, 12), ccp (winSize. width/2, winSize. height/2), 100, 10, 50366f);} // create a 3D shaking effect if (an = "CCShaky3D") {// parameter: Time, shake grid size, shake range, whether to shake Z axis action = CCShaky3D: create (10, CCSize (16, 12), 2, true );} // create a 3D tile shake effect if (an = "CCShakyTiles3D") {// parameter: time, shake grid size, shake range, and whether to shake the Z axis action = CCShakyTiles3D :: create (5, CCSize (16, 12), 2, true);} // create a 3D broken tile effect if (an = "CCShatteredTiles3D") {// parameter: time, shake grid size, shake range, whether to shake Z axis action = CCShatteredTiles3D: create (1, CCSize (16, 12), 7, true );} // tile shuffling effect if (an = "CCShuffleTiles") {// parameter: time, grid size, random number action = CCShuffleTiles: create (5, CCSize (16, 12), CCRANDOM_0_1 () * 10000);} // multiline disappearance effect (vertical) if (an = "CCSplitCols") {// parameter: Time, number of rows action = CCSplitCols: create (5, 9);} // multiline disappearance effect (horizontal) if (an = "CCSplitRows") {// parameter: Time, row number action = CCSplitRows: create (5, 9);} // square disappears if (an = "CCTurnOffTiles") {// parameter: time, grid size, random Number action = CCTurnOffTiles: create (5, CCSize (16, 12);} // create a distortion effect if (an = "CCTwirl") {// time, grid size, coordinates, number of distortions, amplitude action = CCTwirl: create (5, CCSize (16, 12), ccp (winSize. width/2, winSize. height/2), 5, 5.0f);} // create a fluctuation effect if (an = "CCWaves") {// parameter: time, shaking grid size, fluctuation speed, amplitude, horizontal fluctuation, vertical fluctuation action = CCWaves: create (5, CCSize (16, 12), 5, 5.0f, true, false );} // create a 3D fluctuation effect if (an = "CCWaves3D") {// parameter: time, shaking grid size, fluctuation speed, amplitude action = CCWaves3D: create (5, CCSize (16, 12), 5, 5.0f);} // create a 3D tile fluctuation effect if (an = "CCWavesTiles3D") {// parameter: Time, shake grid size, fluctuation speed, amplitude action = CCWavesTiles3D: create (5, CCSize (16, 12), 5, 5.0f);} if (action) {sprite-> runAction (action) ;}} void ActionEffect: ccTouchEnded (CCTouch * t, CCEvent *) {CCPoint ptStart = t-> getStartLocation (); CCPoint ptEnd = t-> getLocation (); if (ptStart. getDistanceSq (ptEnd) <= 25) {// click // The subwindow in which the vertex exists // convert ptStart to the iner coordinate in ScrollView // determine the clicked LayerColorCCPoint ptInContainer = _ c-> convertToNodeSpace (ptStart ); CCArray * arr = _ c-> getChildren (); // All layercolorfor (int I = 0; I <sizeof (_ actionName)/sizeof (* _ actionName ); I ++) {CCLayerColor * layer = (CCLayerColor *) arr-> objectAtIndex (I); if (layer-> boundingBox (). containsPoint (ptInContainer) {testAction (I, layer); break ;}}}}