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

【唠叨】

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

 

【致谢】

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

 

【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等分。

    如下图所示:

wKiom1QAS6rhZu3JAABvYQ32Sk0085.jpg

 

4、格子与网格

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

    4.1、晃动特效

wKioL1QASzSSfCnNABDyLvq3-oU409.gif

 

wKioL1QASzbj5ZtgABJG9AAtb-Q149.gif

    

    4.2、波动特效

wKiom1QASh7Sx5P_ABGtYB4nJCQ300.gif

 

wKioL1QASzfRnt0zABAPP3_EMf0150.gif

 


 

【代码实战】

    自己参考官方的TestCpp项目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: cocos2d-x js是一个开源的游戏开发引擎,用于开发跨平台的2D游戏,它使用JavaScript作为脚本语言。以下是对cocos2d-x js的回答。 cocos2d-x js是cocos2d-x引擎的JavaScript版本,它继承了cocos2d-x引擎强大的功能和性能,同时提供了使用JavaScript编写游戏的便利性。 cocos2d-x js通过使用JavaScript脚本语言进行游戏开发,使得开发者可以更加方便地编写游戏逻辑和动作表现。JavaScript是一种简单易用的脚本语言,对于不熟悉复杂编程语言的开发者来说,使用JavaScript进行游戏开发会更加容易上手。 cocos2d-x js提供了丰富的游戏功能和API,包括精灵动画、物理引擎、碰撞检测、场景管理等,这些功能可以帮助开发者快速构建2D游戏。同时,cocos2d-x js还提供了跨平台的支持,可以将游戏轻松移植到不同的平台上,如iOS、Android、Windows等。 除了基本的功能和API,cocos2d-x js还支持插件和扩展,开发者可以根据自己的需求进行扩展和定制,以满足游戏的特殊需求。 总结来说,cocos2d-x js是一个强大而灵活的游戏开发引擎,它提供了使用JavaScript进行游戏开发的便利性,同时具备跨平台的支持和丰富的功能和API。无论是初学者还是有经验的开发者,都可以通过cocos2d-x js来快速构建出高质量的2D游戏。 ### 回答2: Cocos2d-x是一款强大的跨平台游戏开发引擎,具有许多独特而且强大的功能。cocos2d-x jsCocos2d-x引擎的JavaScript版本,它可以让开发者使用JavaScript编写游戏逻辑和界面。 使用Cocos2d-x js,开发者可以轻松地创建2D游戏,并在多个平台上运行,如iOS、Android、Windows和Web。这意味着开发者只需编写一次代码,就可以发布到多个平台,大大提高了开发效率。 cocos2d-x js提供了丰富的API和功能,使得开发复杂的游戏变得轻松。它包括图形渲染、动画系统、物理引擎、碰撞检测、音频管理等功能,开发者可以利用这些功能创建出丰富多样的游戏体验。 此外,cocos2d-x js还支持现代开发工具和技术,如可视化编辑器Cocos Creator,可实时调试和热更新等。开发者可以使用Cocos Creator创建游戏场景、编辑动画、创建粒子效果等。同时,Cocos2d-x js还集成了调试工具,方便开发者进行错误排查和优化。 总之,Cocos2d-x js是一个非常强大且灵活的游戏开发引擎。它提供了广泛的功能和工具,使得开发者能够快速创建高质量的2D游戏,并在多个平台上发布。无论是初学者还是有经验的开发者,都可以通过Cocos2d-x js轻松实现独特而丰富的游戏体验。 ### 回答3: Cocos2d-x js是一种使用Javascript编写的跨平台游戏开发框架。它是基于Cocos2d-x引擎的扩展,可以在多个平台上运行,包括iOS、Android、Windows和Mac等。 Cocos2d-x js提供了丰富的游戏开发工具和功能,可以帮助开发人员轻松创建高质量的游戏应用。它具有优秀的性能和灵活性,并且能够快速部署到各种平台上。 使用Cocos2d-x js,开发人员可以使用熟悉的Javascript语言进行游戏开发,而无需学习其他编程语言。它提供了一系列API和组件,例如精灵、动作、节点和场景等,以简化游戏的创建和管理过程。 此外,Cocos2d-x js还提供了多种功能,如物理引擎、碰撞检测、音效播放和动画效果等,可以帮助开发人员实现各种游戏特效和交互效果。 Cocos2d-x js还支持一些常用的开发模式和工具,如游戏UI编辑器、游戏调试器和性能分析器等,方便开发人员进行游戏开发和调试。 总之,Cocos2d-x js是一款功能强大、易于使用并且跨平台的游戏开发框架。无论是新手还是经验丰富的开发人员,都可以借助它来创建出令人印象深刻的游戏应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值