`
mmdev
  • 浏览: 12948747 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

【地球人..学习cocos2d-x】学习实践之逐步变强的HelloWorld(下集)

 
阅读更多

【地球人..学习cocos2d-x】学习实践之逐步变强的HelloWorld(下集)

笨木头花心贡献,啥?花心?不呢,是用心~

转载请注明,原文地址
http://blog.csdn.net/musicvs/article/details/8089125

正文:

上集传送门:http://blog.csdn.net/musicvs/article/details/8086971

好,继续

先修正上一篇文章的一个错误,在cocos2d-x2.x版本之后,创建精灵的方式由sprite***改为create***(并且几乎其它所有类都有这样的改动,虽然让使用了1.x版本的朋友很无奈,但是这个create还是比sprite**什么的比较形象。

于是,把上次的spriteWithSpriteFrameName改为createWithSpriteFrameName

1. 第三个HelloWorld-使用CCSpriteBatchNode

这个如果把原理抛开的话,很简单:

/* 加载图片资源到SpriteFrame缓存池*/

CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();

cache->addSpriteFramesWithFile("images.plist","images.png");

/* 创建CCTexture2D对象*/

CCTexture2D* texture = CCTextureCache::sharedTextureCache()->textureForKey("images.png");

/* 使用CCTexture2D对象创建BatchNode */

CCSpriteBatchNode* batchNode = CCSpriteBatchNode::createWithTexture(texture);

/* 添加BatchNode到场景*/

this->addChild(batchNode);

CCSize size = CCDirector::sharedDirector()->getWinSize();

/* 创建精灵*/

CCSprite* sprite = CCSprite::createWithSpriteFrameName("p6.png");

sprite->setPosition(ccp(size.width / 2,size.height / 2));

/* 把精灵添加到BatchNode */

batchNode->addChild(sprite);

好像没有什么能解释的,我本身对CCSpriteBatchNode的理解也十分不透彻。只是大概知道,把属于同一张大图片里的所有小图片都放到一个BatchNode对象里,然后给绘制的时候,只提交一次(好像是和OPGL的绘制原理有关的)。既然这是HelloWorld,就不详细研究了。

只要留意一下步骤:

创建用TexturePacker打包图片

->用图片创建Texture2D对象

->Texture2D对象创建SpriteBatchNode对象并添加到场景

->然后创建精灵的时候把精灵添加到SpriteBatchNode里而不是添加到场景里。

运行效果是一样的:

2. 第四个HelloWorld-加入关闭按钮

正常情况下,加入关闭按钮是比较简单的:

CCMenuItemImage *pCloseItem =CCMenuItemImage::create(

"CloseNormal.png",

"CloseSelected.png",

this,

menu_selector(HelloWorld::menuCloseCallback));

menu->addChild(pCloseItem);

就不解释了。

现在的问题是,我们已经把图片都打包在一张大图里了,根本就没有单独的CloseNormal.pngCloseSelected.png。那怎么办?最简单的办法就是没有办法。

噗,开玩笑的,看看代码:

/* 加入关闭按钮-使用图片菜单来实现*/

CCMenuItemImage* closeItemImg = CCMenuItemImage::create();

/* 初始化,先不设置图片*/

closeItemImg->initWithTarget(

this, menu_selector(BatchNodeSceneWithCloseBtn::menuCloseCallback));

/* 设置正常图片-使用SpriteFrame对象*/

closeItemImg->setNormalSpriteFrame(cache->spriteFrameByName("CloseNormal.png"));

/* 设置点击状态图片-使用SpriteFrame对象*/closeItemImg->setSelectedSpriteFrame(cache->spriteFrameByName("CloseSelected.png"));

CCMenu* menu = CCMenu::create(closeItemImg,NULL);

menu->setPosition(ccp(size.width - 50, 50));

this->addChild(menu);

区别就是,initWithTargetsetNormalSpriteFramesetSelectedSpriteFrame这几个函数,主要是setNormalSpriteFramesetSelectedSpriteFrameSpriteFrame已经存在SpriteFrameCache里了,所以我们可以成功地设置按钮的图片。

好了,第一篇学习的实践HelloWorld已经结束了。

我的第二篇学习即将开始,看完之后再和大家分享心得,大家也可以一起去看看,这位大牛写的教程很不错:

http://cn.cocos2d-x.org/bbs/forum.php?mod=viewthread&tid=805

.

.

分享到:
评论

相关推荐

    Cocos2d-x 3.x游戏开发实战pdf含目录

    Cocos2d-x 3.x游戏开发实战pdf含目录,内容详细,强烈推荐给大家。

    cocos2d-x3D扩展3DToolKitforcocos2d-x.zip

    3D ToolKit for cocos2dx 是一个简单的cocos2d-x 3D扩展,可以方便地在cocos2dx环境中创建3D图形。 基于cocos2d-x 2.2开发。 已实现功能: 1,向量和矩阵运算。 2,扩展的3D相机。(支持 透视投影 和 ...

    龙灵修-讲Lua的cocos2d-x进阶视频.rar

    cocos2d-x进阶教程1_2编写自己的Lua版本的HelloWorld.mp4 cocos2d-x进阶教程1_3Lua语言的注释、变量、语句块.mp4 cocos2d-x进阶教程1_4Lua中函数、条件判断语句.mp4 cocos2d-x进阶教程1_5Lua中循环语句和逻辑运算...

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    cocos2d-x 3.x游戏开发实战光盘

    cocos2d-x 3.x游戏开发实战光盘

    Cocos2d-x 3.x制作2048

    详细介绍 基于coco2d-x 3.0开发的2048,内容详细,代码整洁,适合学习。

    Cocos2d-x-3.x游戏开发之旅

    Cocos2d-x-3.x游戏开发之旅-钟迪龙著 全新pdf版和附书代码(代码为工程文件,可复制) 附带目录标签

    cocos2d-x实战项目

    cocos2d-x实战项目 01.cocos2d-x原理及环境配置.rar 03.cocostudio使用方法及UI控制.rar 04.XML文件读取与骨骼动画.rarcocos2d-x实战项目 01.cocos2d-x原理及环境配置.rar 03.cocostudio使用方法及UI控制.rar 04.XML...

    cocos2d-x-2.1.5

    cocos2d-x-2.1.5

    Cocos2d-x 3.x游戏开发之旅教程及完整源码下载

    Cocos2d-x 3.x游戏开发之旅教程及完整源码下载,使用最新cocos2d-x-3.14版本,在xcode7.3上已编译通过。 解决相关问题 1、解决源程序在高版本上无法编译问题 2、解决源程序中文注释部分,xcode上显示乱码问题 使用...

    精通COCOS2D-X游戏开发 基础卷_2016.4-P399-13961841.pdf

    精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发

    cocos2d-x 3.0

    cocos2d-x 3.0 人物行走 . 包里有代码和 图片资源.

    Cocos2d-x高级开发教程

    书中汇聚了热门手机游戏《捕鱼达人》开发的实战经验,作者从最基础的内容开始,逐步深入地介绍了Cocos2d-x的相关知识点。此外,书中的教学资源获得《捕鱼达人》手机游戏的授权,读者可以从一流游戏开发中高起点地...

    cocos2d-x事件类

    在使用cocos2d-x开发游戏的过程中,为了实现逻辑和显示相分离。 在下通宵了一个晚上,写出了该事件类。 谨记,该事件只能用于cocos2d-x中。 事件发送者需要继承EventDispatcher类 事件接收者需要继承EventHandle类...

    cocos2d-x-3.0 类图

    这是我重新弄的cocos2d-x-3.0的类图.之前别人兄台弄的,有些不全面,有些地方错误.我这个可以说是最新的了.每个类添加了中文的详细注解,同时也添加了中文的类名称翻译.这样对cocos2d-x-3.0的框架比较好上手. 有兴趣的...

    cocos2d-1.0.1-x-0.10.0

    cocos2d-x 安装包.cocos2d-1.0.1-x-0.10.0版本。

    大富翁手机游戏开发实战基于Cocos2d-x3.2引擎

    资源名称:大富翁手机游戏开发实战基于Cocos2d-x3.2引擎内容简介:李德国编著的《大富翁手机游戏开发实战(基于 Cocos2d-x3.2引擎)》使用Cocos2d-x游戏引擎技术,带领读者一步一步从零开始进行大富翁移动游戏的开发...

    cocos2d-x-3.2旧版引擎下载

    cocos2d-x-3.2下载,不多说。或者可以下载另一个资源 cocos引擎老版本集合(cocos2d-x-2.2.1 - 3.5) http://download.csdn.net/download/crazymagicdc/9982656

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    cocos2d-android jar包全套.zip

    如果你想用cocos2d开发android游戏,但是又不方便找包,这里就可以为你提供cocos2d开发的所有相关包,解压后得到libs文件夹即可。

Global site tag (gtag.js) - Google Analytics