1. 在HelloWorld之前
因为我准备按照第一篇教程里教我的东西,一步步从简单到难写成多个Demo,于是我又不想新建那么多项目,所以,是的~我们需要一个菜单界面。
要创建很难,很多步,别激动,慢慢来,噗:
- 首先我们需要一个CCMenu对象,它是一个菜单对象,当然菜单是可以包含子菜单的。
-
然后我们需要子菜单,在cocos2d-x里子菜单就是CCMenuItem,但是Item的类别有很多,在这里,我选择文字标签Item:CCMenuItemLabel
-
CCMenu需要一个CCMenuItemLabel,同样CCMenuItemLabel它只是一个Item,而它又要作为一个标签Item,所以它需要一个标签对象:CCLabelTTF
-
于是,整个步骤就是,一个CCLabelTTF对象添加到一个CCMenuItemLabel对象,然后CCMenuItemLabel对象再添加到CCMenu里。
好了,废话多了,看代码:
/* 创建一个Label对象 */
CCLabelTTF*
helloWorldLab1 = CCLabelTTF::create("HelloWorld1",
"Arial", 35);
/* 创建一个CCMenuItemLabel对象,需要Label对象作为参数
*/
CCMenuItemLabel*
helloWorldItem1 = CCMenuItemLabel::create(
helloWorldLab1,
this,
menu_selector(MenuScene::showHelloWorld1));
/* 创建一个CCMenu对象,需要Item对象作为参数
*/
CCMenu*
menu = CCMenu::create(helloWorldItem1,
NULL);
/* 最后将CCMenu菜单添加到场景中 */
this->addChild(menu);
|
menu_selector,没有人想好奇一下这个是什么吗?虽然它的内在原理我现在还没懂,但是我知道它相当于一个回调功能。当菜单的Item对象被点击之后,会调用
showHelloWorld1函数。也就是说,我们可以在这里设置点击菜单项之后要做的事情。
2. 第一个HelloWorld
现在来一个最简单的吧:
CCSprite*
backgroundSprite = CCSprite::create("HelloWorld.png");
this->addChild(backgroundSprite);
|
就这样,最普通的创建一个精灵的方式。
友情提示:如果对C++语法也不熟悉的朋友(比如我,噗),最好自己一点点写,重新写一个场景类,包括它的头文件,cpp文件。
3. 第二个-使用TexturePacker打包后的图片创建精灵
关于TexturePacker的使用我就不说了,大牛的教程里讲得很详细了。另外一提,TexturePacker并不是万能的,千万不要过度依赖,本人亲测,如果用TexturePacker打包的图片有过多空白冗余的地方,将会适得其反地使得图片更加占用内存(和打包之前相比)。所以,打包的时候一定要用心,尽量减少空白的地方。
嗯,然后,为了添加第二个Demo,我需要在菜单里加入第二个Item对象,于是,看看:
/* 获取屏幕大小*/
CCSize
size = CCDirector::sharedDirector()->getWinSize();
CCLabelTTF*
itemLab = NULL;
/* Demo1-最简单的方式创建一个精灵*/
itemLab =
CCLabelTTF::create("HelloWorld1",
“Arial”,
30);
CCMenuItemLabel*
helloWorldItem1 = CCMenuItemLabel::create(
itemLab,
this,
menu_selector(MenuScene::showHelloWorld1));
/* Demo2-使用TexturePacker打包后的图片创建一个精灵*/
itemLab =
CCLabelTTF::create("HelloWorld2",
“Arial”,
30);
CCMenuItemLabel *
helloWorldItem2 = CCMenuItemLabel::create(
itemLab,
this,
menu_selector(MenuScene::showHelloWorld2));
/* 创建菜单*/
CCMenu*
menu = CCMenu::create();
menu->setPosition(ccp(size.width / 2,
size.height / 2));
/* 添加所有Item到菜单中*/
menu->addChild(helloWorldItem1);
menu->addChild(helloWorldItem2);
/* 自动按垂直方向排列子Item */
menu->alignItemsVertically();
this->addChild(menu);
|
前面的创建Item就不说了,我想说说红色加粗的部分,向菜单添加Item对象和向场景添加精灵的方式是一样的,用addChild就可以了,很方便。
然后,刚开始我发现直接这样add进入的Item全都挤在一起了,于是我首先想到用setPosition
,当然,结果是成功的。可是,后来我想,cocos2d-x这么强大,应该有自动排列才对的,于是我找了一下CCMenu的函数,发现了这个alignItemsVertically(),让子Item按垂直方向自动排队~很好用,噗。
然后进入正题,先打包好图片,得到两个文件:images.plist、images.png。我比较懒,直接从大牛的教程里下载的…然后看代码:
/* 将图片加载到缓存池中*/
CCSpriteFrameCache*
cache = CCSpriteFrameCache::sharedSpriteFrameCache();
cache->addSpriteFramesWithFile("images.plist",
"images.png");
CCSize
size = CCDirector::sharedDirector()->getWinSize();
/* 使用TexturePacker打包图片后创建精灵的方式*/
CCSprite*
people = CCSprite::spriteWithSpriteFrameName("p6.png");
people->setPosition(ccp(size.width / 2,
size.height / 2));
this->addChild(people);
|
好了,你懂了,不说了。
噗,开玩笑的。CCSpriteFrameCache是缓存池,存放所有CCSpriteFrame对象的地方,用addSpriteFramesWithFile方法把打包好的图片解析成CCSpriteFrame对象,然后放到缓存池里。
于是,创建精灵的时候就直接用图片打包前各自的名字就可以了,比如下图中的箭头所指的那个图片(由于怕你们看不到它,所以我稍微多用了2个箭头,是2个么?应该是的=
=):
它在打包前有自己的文件名的,叫做”p6.png”,于是,我想用这个小人图片创建一个精灵,就这样:
CCSprite*
people = CCSprite::spriteWithSpriteFrameName("p6.png");
好了,这就是第二个HelloWorld了。
待续…
分享到:
相关推荐
Cocos2d-x 3.x游戏开发实战pdf含目录,内容详细,强烈推荐给大家。
3D ToolKit for cocos2dx 是一个简单的cocos2d-x 3D扩展,可以方便地在cocos2dx环境中创建3D图形。 基于cocos2d-x 2.2开发。 已实现功能: 1,向量和矩阵运算。 2,扩展的3D相机。(支持 透视投影 和 ...
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游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...
cocos2d-x 3.x游戏开发实战光盘
详细介绍 基于coco2d-x 3.0开发的2048,内容详细,代码整洁,适合学习。
Cocos2d-x-3.x游戏开发之旅-钟迪龙著 全新pdf版和附书代码(代码为工程文件,可复制) 附带目录标签
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 3.x游戏开发之旅教程及完整源码下载,使用最新cocos2d-x-3.14版本,在xcode7.3上已编译通过。 解决相关问题 1、解决源程序在高版本上无法编译问题 2、解决源程序中文注释部分,xcode上显示乱码问题 使用...
精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发
cocos2d-x 3.0 人物行走 . 包里有代码和 图片资源.
书中汇聚了热门手机游戏《捕鱼达人》开发的实战经验,作者从最基础的内容开始,逐步深入地介绍了Cocos2d-x的相关知识点。此外,书中的教学资源获得《捕鱼达人》手机游戏的授权,读者可以从一流游戏开发中高起点地...
这是我重新弄的cocos2d-x-3.0的类图.之前别人兄台弄的,有些不全面,有些地方错误.我这个可以说是最新的了.每个类添加了中文的详细注解,同时也添加了中文的类名称翻译.这样对cocos2d-x-3.0的框架比较好上手. 有兴趣的...
在使用cocos2d-x开发游戏的过程中,为了实现逻辑和显示相分离。 在下通宵了一个晚上,写出了该事件类。 谨记,该事件只能用于cocos2d-x中。 事件发送者需要继承EventDispatcher类 事件接收者需要继承EventHandle类...
cocos2d-x 安装包.cocos2d-1.0.1-x-0.10.0版本。
资源名称:大富翁手机游戏开发实战基于Cocos2d-x3.2引擎内容简介:李德国编著的《大富翁手机游戏开发实战(基于 Cocos2d-x3.2引擎)》使用Cocos2d-x游戏引擎技术,带领读者一步一步从零开始进行大富翁移动游戏的开发...
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
如果你想用cocos2d开发android游戏,但是又不方便找包,这里就可以为你提供cocos2d开发的所有相关包,解压后得到libs文件夹即可。