cocos2d-x学习之旅(九): 2.2 盘古开天辟地,进入游戏世界
混沌天地,盘古不忍寂寞,打掉自己的牙齿化作一把巨斧劈开天地,创造了宇宙万物,演化出生机勃勃的大千世界,让我们来扮演盘古,创造一个崭新的游戏世界。
在游戏开发过程中,需要了解几个重要的概念:导演,场景,布景,角色和动作,既然我们扮演盘古,天地的演化就由我们来作主
1.CCDirector(盘古):盘古用一把巨斧创造了世界,组织了天地万物,那么在游戏里,他就是游戏的创世神,制定游戏的规则,让场景 ,布景和宇宙万物有序地动作起来
2.CCScene(天地):盘古用身体撑开天地,所谓天地,在游戏里就是我们常见的关卡,关卡主要由布景和角色组成。
3.CCamera(太阳):日升日落,昼夜交替,万物得以生生不息。在游戏里,不同的角度,旋转,位置变化,缩放。
4.CCLayer(山川大地): 盘古临死前,他嘴里呼出的气变成了春风和天空的云雾;肌肉变成千里沃野,供万物生
存。 在游戏里,布景就是在每个场景里的背景,就是山川,大地,天空。
5.CCSprite(众生万物):众生万物在大地上生活,栖息繁衍,不断进化,厮杀。游戏里人物行走,雄鹰翱翔,怪物横行,这些都可以由你自己创造。
6.CCAction(动作):人类诞生,捕杀猎物。在游戏里,要生存,与怪物搏斗,就得拥有各种技能,动作,这就需要CCAction支持。
第一步 :在HelloWorld的Init方法里加载游戏背景,用CCSprite加载start.jpg的资源文件作为游戏的开始背景。
//加载过场画面CCSize size = CCDirector::sharedDirector()->getWinSize();CCSprite* pSprite = CCSprite::create("start.jpg");CC_BREAK_IF(! pSprite);pSprite->setPosition(ccp(size.width/2, size.height/2));// Add the sprite to HelloWorld layer as a child layer.this->addChild(pSprite, 0);
游戏中只有一个导演,所以CCDirector使用单例模式,为什么会使用单例模式,以及它的好处,我会在后面的章节单独谈到
CCSprite初始化加载资源采用create方法,这是自cocos2d-x2.0后开始采用的,使用了autorelease自动管理内存,所以当我们使
用时不必手动release掉内存
第二步:加载游戏的控制菜单
在resoure.h中加入资源文件
static const char s_playfont[] = "fonts/bitmapFontChinese.fnt";static const char s_start[] = "Start Game";static const char s_exit[] = "Exit Game";
在加载完过场画面之后加载菜单
//加载游戏菜单 CCLabelBMFont* startfontstyle=CCLabelBMFont::create(s_start,s_playfont);CCMenuItemLabel* startItem=CCMenuItemLabel::create(startfontstyle,this,menu_selector(HelloWorld::menuPlayNewGame));CCLabelBMFont* exitfontstyle=CCLabelBMFont::create(s_exit,s_playfont);CCMenuItemLabel* exitItem = CCMenuItemLabel::create(exitfontstyle,this,menu_selector(HelloWorld::menuCloseCallback));CCMenu* startMenu=CCMenu::create(startItem,exitItem, NULL);startMenu->alignItemsVertically();this->addChild(startMenu);
游戏的菜单item:
CCMenuItemSprite:使用图片sprite作为menu的菜单项
CCLabelAtlas:设置好字库文件,并且以ascii字符排序顺序定义好字库的初始字符,就可以使用字库创建文本Label
CCMenuItemLabel:以label方式创建的菜单项,会自动以点击放大作为菜单的操作效果来处理
CCMenuItemFont:普通的文本菜单项
CCLabelBMFont:使用字体的文本菜单项
在HelloWorld.h中加入菜单回调方法的声明
// a selector callbackvoid menuCloseCallback(CCObject* pSender);void menuPlayNewGame(CCObject* sender);
在HelloWorld.cpp中加入菜单回调方法
void HelloWorld::menuCloseCallback(CCObject* pSender)
{// "close" menu item clicked
CCDirector::sharedDirector()->end();
}void HelloWorld::menuPlayNewGame(CCObject* sender)
{}
下一章节开始制作TMX游戏地图,并加载到我们的新场景当中.
转载于:https://www.cnblogs.com/dekins/archive/2012/08/28/2659462.html
cocos2d-x学习之旅(九): 2.2 盘古开天辟地,进入游戏世界相关推荐
- FPGA_Verilog学习之旅(3)---VGA贪吃蛇游戏
文章目录 前言 一.整体设计流程 二.RTL Viewer 三.主要模块功能 1.按键控制模块 2.VGA驱动模块 3.游戏开始模块 4.难度选择模块 5.游戏进行模块 6.游戏结束模块 四.实况展示 ...
- WCF学习之旅—WCF服务的WAS寄宿(十二)
上接 WCF学习之旅-WCF服务部署到IIS7.5(九) WCF学习之旅-WCF服务部署到应用程序(十) WCF学习之旅-WCF服务的Windows 服务程序寄宿(十一) 八.WAS宿主 IIS ...
- 无星的RN学习之旅(四)——通信、持久化存储、iOS打包
说说最近项目的一些感想吧. 一.RN的创意 RN其实我觉得是一个很有创意的想法.不知道各位写RN项目的时候,有没有打开Xcode看过app的层级关系,我发现RN的这个想法,真的很有创意. 作为一名原生 ...
- WCF学习之旅—第三个示例之四(三十)
上接WCF学习之旅-第三个示例之一(二十七) WCF学习之旅-第三个示例之二(二十八) WCF学习之旅-第三个示例之三(二十九) ...
- Python学习之旅(核心编程基础篇003运算符)
Python学习之旅 Python核心编程基础篇2020.12.18 一.算数运算符 二.比较运算符 三.赋值运算符 四.逻辑运算符 五.成员运算符 六.身份运算符 七.三目运算符 八.运算符优先级 ...
- 开源中国社区----我的学习之旅
开源中国社区----我的学习之旅 1.socket实现银行排队系统 http://www.oschina.net/code/snippet_2376204_53196 2.Qt棋盘 http://ww ...
- hadoop学习之旅1
大数据介绍 大数据本质也是数据,但是又有了新的特征,包括数据来源广.数据格式多样化(结构化数据.非结构化数据.Excel文件.文本文件等).数据量大(最少也是TB级别的.甚至可能是PB级别).数据增长 ...
- 基于设计模式的学习之旅-----访问者模式(附源码)
基于设计模式的学习之旅-----访问者模式 1.初始访问者模式 2.什么是访问者模式 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. 3.模 ...
- 基于 Android NDK 的学习之旅-----资源释放
基于 Android NDK 的学习之旅-----资源释放 做上一个项目的时候因为与C引擎交互频繁,有时候会突然莫名其妙的的整个应用程序直接挂掉.因为我是学Java 开始的,所以对主动释放内存没多大概 ...
最新文章
- 【 仿真 】基于多维相似性分析的移动定位方法仿真
- 解决SSH连接Linux超时自动断开
- 自学了python基础英语_Python自学路线图之Python基础自学
- java 不可修改的集合对象_java集合:关于hashmap存储一个对象,中间改变对象的值,为什么再remove不能用新名字来删除...
- windows mysql dump_mysql在Windows下使用mysqldump命令手动备份数据库和自动备份数据库...
- 【DIY】(开发板不吃灰运动)CC3200LaunchPad改装红外温度计
- 【CVPR2020 image caption】读Meshed-Memory Transformer for Image Captioning
- mysql maxtmptables_mysql的tmp_table_size和max_heap_table_size
- flex内根据id(string)获取对象
- Webx框架:Pipeline基本介绍
- COJ 1081 集训队分组
- python笔记之Cmd模块
- php中this的使用技巧,JavaScript中this关键字使用方法详解
- 赚钱有捷径吗?为什么有的人赚钱很容易
- matlab figure函数_如何在Matlab中使用GUI做一个简易音乐播放器? ---- (六)控件间的数据传递...
- 多线程之操作CopyOnWriteArrayList解决Iterator迭代器产生java.util.ConcurrentModificationException
- 在html中实现word中打批注的功能
- 腾讯将创办腾讯云启商学院,马化腾任荣誉院长
- 盛大啊啊实打实倒萨的a
- Selenium - 元素等待与智能等待
热门文章
- 机器学习算法与Python实践之逻辑回归(Logistic Regression)
- idea 自动生成mybaits_如何让idea自动创建mybatis配置文件?
- TMS320C55x的硬件结构
- android中Sqlite数据库存储
- 嵌入式系统——指令操作扩展
- linux lite安装教程,Linux Lite第一个获得Linux 4.14 及如何安装它
- java 9消失_java9增强的自动关闭资源
- DMA访问(直接内存访问)
- Hive依据key获取value
- Windows Driver开发_TraceEvents调试以及加载驱动的方法