cocos2dx基础篇(22)——扩展动作CCGridAction

【唠叨】

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

【致谢】

http://gl.paea.cn/contents/77054db9872b09b1.html

《Cocos2D-X游戏开发技术精解》刘建卓 著(别误会,我不是来推销书的



【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、格子与网格

格子与网格的区别,看完下面的几张图就明白了:

(1)晃动特效:

(2)波动特效



【代码实战】

自己参考官方的TestCpp项目。

时间: 2024-07-30 13:25:45

cocos2dx基础篇(22)——扩展动作CCGridAction的相关文章

cocos2dx基础篇(7)——菜单按钮CCMenu、CCMenuItem

[本节内容] 菜单按钮在游戏中是经常被用到的,比如主菜单界面的菜单选项,暂停游戏时的菜单选项等等.cocos2dx引擎同样为我们提供了CCMenu菜单的功能,并包含了一些简单的菜单项CCMenuItem.且菜单项附带触碰按钮时,自动放大的效果. 温馨提示:本节内容比较多,需要大家慢慢分析,不要急于求成. 本节组织结构如下: 一.介绍CCMenu. 二.介绍CCMenuItem,及其具体的六个子类. 三.代码实战. [一.菜单CCMenu] 菜单CCMenu是专门用来承载菜单按钮的CCLayer图

cocos2dx基础篇(13)——按钮控件CCControlButton

[引言] 按钮类CCControlButton继承于控件类CCControl. 控件类CCControl主要向子类提供了一系列的控件触发事件.当子控件触发相关的事件后,就会执行相关的控件事件回调函数.这与之前讲的CCMenu中的菜单按钮回调是类似的. 控件类CCControl主要有三个子类: (1)开关控件CCControlSwitch (2)滑块控件CCControlSlider (3)按钮控件CCControlButton 本节讲的是其子类其中之一:按钮类CCControlButton. [

cocos2dx基础篇(4)——浅析cocos2dx引擎目录

通过前面几节的学习,相信大家都已经配置好了VS+cocos2dx2.2.3的环境,并且成功运行了官方的案例HelloWorld. 一.窥探文件目录 要想学好cocos2dx,首先就需要对引擎目录下的各个文件有所了解.接下来,就让我们先来分析一下cocos2dx2.2.3引擎的文件目录吧. 从目录中我们主要了解一下一下几个文件: cocos2dx:cocos2d-x引擎的核心部分,存放了引擎的大部分源文件. CocosDenshion:声音模块相关源文件. Debug.win32:在Windows

cocos2dx基础篇(8)——定时器更新schedule、update

[本节内容] 定时器在大部分游戏中是不可或缺的,即每隔一段时间,就要执行相应的刷新体函数,以更新游戏的画面.时间.进度.敌人的指令等等. cocos2dx为我们提供了定时器schedule相关的操作.其操作函数的定义在CCNode中,所以基本上大多数的引擎类都可以设置定时器,如CCLayer.CCSprite.CCMenu等. 定时器更新的方式分为三类: (1)默认定时器:scheduleUpdate(); (2)自定义定时器:schedule(); (3)一次性定时器:scheduleOnce

cocos2dx基础篇(12)——点九图CCScale9Sprite

[引言] 本来是想学学控件类CCControl的另一个子类按钮控件CCControlButton的.但是发现里面有一个参数牵扯到CCScale9Sprite这个类.看到CCScale9Sprite,很容易联想到精灵类CCSprite.两者又有什么区别呢?因此我就去网上收了一些有关CCScale9Sprite的资料来学习. [参考文献] [1] http://blog.csdn.net/nynyvkhhiiii/article/details/12782249 [2] http://www.cnb

cocos2dx基础篇(5)——浅析几个常见类

目录 入口类main.cpp 主要控制类AppDelegate.cpp 节点类CCNode 导演类CCDirector 场景类CCScene 层次类CCLayer 精灵类CCSprite 大小类CCSize 坐标CCPoint 矩形类CCRect 数组类CCArray 入口类main.cpp 这是应用程序的入口类,用于创建cocos2dx的AppDelegate实例.窗口大小.以及运行程序. 主要代码如下:     // create the application instance     A

iOS系列 基础篇 07 Action动作和输出口

iOS系列 基础篇 07 Action动作和输出口 目录:  1. 前言及案例说明 2. 什么是动作? 3. 什么是输出口? 4. 实战 5. 结尾 1. 前言及案例说明 上篇内容我们学习了标签和按钮,下面呢 我们通过一个具备用户交互功能的工程案例进一步练习这两个控件的使用,以及动作和输出口的控制. 此案例基于上篇内容的界面设计,功能的概念流程如图: 此案例的动作和输出口机制如图: 2. 什么是动作? 动作是为了响应一个控件的事件而定义的方法,类似于.NET中WinForm为控件某一事件添加的动

cocos2dx基础篇(10)——开关按钮CCControlSwitch

[本节内容] 开关类CCControlSwitch继承于控件类CCControl. 控件类CCControl主要向子类提供了一系列的控件触发事件.当子控件触发相关的事件后,就会执行相关的控件事件回调函数.这与之前讲的CCMenu中的菜单按钮回调是类似的. 控件类CCControl主要有三个子类: (1)开关控件CCControlSwitch (2)滑块控件CCControlSlider (3)按钮控件CCControlButton 本节讲的是其子类其中之一:开关类CCControlSwitch.

cocos2dx基础篇(30)——颜色布景层CCLayerColor

[唠叨] 在游戏开发的过程中,突然想更改一下CCLayer图层的背景颜色,可是却怎么也找不到设置背景色的属性.于是搜索了一番,发现原来还有一个颜色布景层CCLayerColor. 本节将介绍一下:颜色布景层CCLayerColor,以及它的一个子类渐变色布景层CCLayerGradient. [扩展阅读] 颜色混合模式:http://shahdza.blog.51cto.com/2410787/1547633 [CCLayerColor] 颜色布景层CCLayerColor有两个父类:CCLay