本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010
在这一期中,我们将会学习到一些引擎中非常炫的动作类,它们可不再仅仅是局限在2D画面的动作了,而是一
些3D动作。网格动作类类似于特效,可以实现翻转、抖动、震荡、水波纹等效果。
一、网格动作类
在Cocos2D-X中,网格类的基类CCGridBase有两个子类,即CCGrid3D和CCTiledGrid3D。这两个类的共同点
是,网格的每个子块都可以分离出来。CCGridBase的继承关系如下图所示。
网格没有什么直接应用的场合,只要明白CCGrid3D和CCTiledGrid3D,并且网格动作是基于网格的即可。运行
网格动作的节点好像被分成了大小相同的很多矩形,通过这些矩形的动作形成整体动作,这些矩形就好像形成了一个
矩阵。16 x 12的网格将会运行得非常快,但是效果并不是非常好。32 x 24的网格看起来会非常棒,但是在有些时候
运行起来不会太快。
二、网格动作类的使用
使用网格之前需要取消OpenGL的深度检测,调用如下语句:
CCDirector::sharedDirector()->setDepthTest(false);
网格动作的使用和普通动作一样,可以使用runAction来运行动作,具体动作如下图所示。
注意:在使用网格时,网格动作结束后需要把网格清空,如下代码所示。
void HelloWorld::checkAnim(float dt)
{
CCNode* s2 = getChildByTag(1);
if (s2->numberOfRunningActions() == 0 && s2->getGrid() != NULL)
s2->setGrid(NULL);;
}
三、项目示例
由于网格动作的效果比较多,这里我就以一个比较典型的翻页网格效果进行实战演练。
1、首先新建Cocos2D-X项目,取名为“MyCCGridAction”,然后在HelloWorldScene.h文件中声明成员函数。
void checkAnim(float dt);
2、在HelloWorldScene.cpp文件中的init函数中添加如下所示代码。
bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
//取消深度检测
CCDirector::sharedDirector()->setDepthTest(false);
//获得尺寸大小
CCSize s = CCDirector::sharedDirector()->getWinSize();
//初始化图层的颜色
initWithColor( ccc4(32,128,32,255) );
//建立节点
CCNode* node = CCNode::create();
//开启深度检测
CCDirector::sharedDirector()->setDepthTest(true);
//建立翻页动作
CCActionInterval* pEffect = CCPageTurn3D::create(3, CCSizeMake(15,10));
//执行动作
node->runAction(pEffect);
//添加节点
addChild(node, 0, 1);
//建立背景精灵图片
CCSprite *bg = CCSprite::create("background3.png");
node->addChild(bg, 0);
bg->setPosition(ccp(s.width/2, s.height/2));
//建立人物精灵图片并执行缩放动作
CCSprite* grossini = CCSprite::create("grossinis_sister2.png");
node->addChild(grossini, 1);
grossini->setPosition(ccp(s.width/4, s.height/2));
CCActionInterval* sc = CCScaleBy::create(2, 5);
CCActionInterval* sc_back = sc->reverse();
grossini->runAction( CCRepeatForever::create(CCSequence::create(sc, sc_back, NULL)));
//建立人物精灵图片并执行缩放动作
CCSprite* tamara = CCSprite::create("grossinis_sister1.png");
node->addChild(tamara, 1);
tamara->setPosition(ccp(3 * s.width/4, s.height/2));
CCActionInterval* sc2 = CCScaleBy::create(2, 5);
CCActionInterval* sc2_back = sc2->reverse();
tamara->runAction( CCRepeatForever::create(CCSequence::create(sc2, sc2_back, NULL)) );
//定时更新
schedule(schedule_selector(HelloWorld::checkAnim) );
bRet = true;
} while (0);
return bRet;
}
3、最后在HelloWorldScene.cpp文件中添加checkAnim函数,该函数用于定时清除网格。
void HelloWorld::checkAnim(float dt)
{
CCNode* s2 = getChildByTag(1);
if (s2->numberOfRunningActions() == 0 && s2->getGrid() != NULL)
s2->setGrid(NULL);;
}
四、示例效果图
翻页动作效果图。
源码下载地址
分享到:
相关推荐
资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...
- 学习渲染流程:Cocos2d-x使用OpenGL作为渲染接口,初学者需要学习OpenGL基础以及Cocos2d-x中的渲染流程和优化技巧。 - 掌握事件处理:游戏中的事件处理是交互的核心,需要学习如何响应用户输入和处理游戏中各种...
在《Cocos2D-X开发学习笔记-网格动作类的使用示例》教程中,作者yangyu20121224详细讲解了如何在实际项目中运用这些网格动作。通过阅读该教程,你可以了解到如何结合代码实例来实现这些视觉效果,从而提升你的游戏...
本文主要围绕Cocos2D-X中的基础动作类的使用进行深入探讨。 一、基础动作介绍 基础动作是Cocos2D-X中最基本的动作类型,包括但不限于位移(Move)、旋转(Rotate)、缩放(Scale)、淡入淡出(Fade)和颜色变化...
《Cocos2d-x 3.x游戏开发实战》是一本深度探讨Cocos2d-x 3.x框架的游戏开发书籍,适合对游戏编程有兴趣的开发者学习。Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的...
在“Cocos2D-X开发学习笔记-游戏数据存储项目实例”中,你可能会学习到如何结合上述技术,创建一个实际的游戏数据存储系统。通过阅读教程和分析提供的项目文件"MyDataSave01",你将深入理解如何在实践中应用这些知识...
3. Cocos2d-JS开发:这里强调的是使用Cocos2d-x框架结合JavaScript语言进行开发的过程。由于Cocos2d-x支持多种编程语言(包括C++、JavaScript和Lua),Cocos2d-JS意味着开发者可以采用JavaScript来构建游戏项目。 4...
《Cocos2d-x实战 JS卷 Cocos2d-JS开发》是一本深入探讨Cocos2d-x游戏引擎JavaScript版本使用的专业书籍。Cocos2d-x是全球范围内广泛采用的游戏开发框架,尤其适用于2D游戏的制作,而Cocos2d-JS则是其JavaScript接口...
在Cocos2d-x中,C++作为主要的编程语言,相比初版,第二版可能涵盖了更多Cocos2d-x的新特性和优化。C++的使用可以提供更好的性能和更直接的内存管理,同时也能充分利用面向对象编程的特性来构建复杂的游戏逻辑。 源...
《cocos2d-x学习笔记》 在学习cocos2d-x时,了解其核心组件和工作流程至关重要。AppDelegate是cocos2d-x框架中的一个关键类,它扮演着应用程序入口点的角色,处理应用程序的生命周期事件。让我们深入探讨...
本学习笔记将深入探讨如何在Cocos2D-X中处理触屏事件,让游戏能够响应用户的触摸操作。 首先,我们要了解Cocos2D-X中的触摸事件处理机制。在Cocos2D-X中,触屏事件主要通过`Touch`类和`TouchEvent`类来实现。`Touch...
首先,Cocos2D-X使用了事件系统来处理各种用户输入,包括键盘事件。在Cocos2D-X中,你可以通过监听`EventKeyboard`来捕获键盘上的按键按下和释放动作。要开始监听键盘事件,你需要创建一个`EventListenerKeyboard`...
《Cocos2d-x实战 JS卷》是一本深入探讨Cocos2d-x游戏开发的专著,主要聚焦于使用JavaScript语言进行游戏编程。Cocos2d-x是一个开源的游戏开发框架,广泛应用于移动设备和桌面平台,支持iOS、Android、Windows等多...
《Cocos2D-X游戏开发技术精解》详细介绍如何使用Cocos2D-X引擎开发自己的移动平台游戏。全书共15章,主要内容包括:Cocos2D-X引擎简介;如 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
总的来说,Cocos2d-x 3.1是游戏开发者学习2D游戏开发的一个重要参考点,虽然它已经不是最新的版本,但其核心概念和机制在后续版本中仍然保持一致,是理解整个Cocos2d-x框架的基础。解压并研究“cocos2d-x-3.1”中的...
在"Cocos2D-X开发学习笔记-动作管理类的使用示例"中,我们将深入探讨如何有效地利用动作管理类来实现复杂的动画效果。首先,我们需要了解Cocos2d::ActionManager类,它是Cocos2D-X中的核心组件之一,负责存储和执行...
在游戏开发领域,cocos2d-x是一款广泛使用的开源2D游戏引擎,尤其在移动平台上的应用非常广泛。cocos2d-x 3.0版本带来了许多性能优化和新特性,使得开发者能够更高效地创建游戏。本篇文章将深入探讨cocos2d-x 3.0中...
2. **C++核心**:3.8版本的cocos2d-x使用C++作为主要开发语言,保证了性能和灵活性,同时也通过tolua++和jsb提供Lua和JavaScript接口。 3. **强大的渲染引擎**:支持精灵、批处理、骨骼动画、物理引擎等多种图形...
二、安装 Cocos2d-x 到 Windows 中 双击上图中的 cocos2d-win32.vc2010.sln(如果你使用的是 vs2008,那么只双击cocos2d-win32.vc2008.sln),然后右键点解决方案,再点生成解决方案。这个过程大约有 10 分钟,因...
在Cocos2D-X中,音乐和音效的管理主要通过`cocos2d::AudioEngine`类来完成。这个类提供了一系列的方法用于播放、暂停、停止以及控制音量等操作。 1. **音乐播放**: - `playBackgroundMusic()`:用于播放背景音乐...