关于Cocos2d-x项目运行的过程和场景切换步骤
1.AppDelegate.cpp文件里面的applicationDidFinishLaunching函数其实可以看做C语言里面的main函数,是整个游戏运行的入口
这个函数里面的语句
auto scene = HelloWorld::createScene(); //创建一个HelloWorld类型的场景,其实是一个带着层,层中带着节点的场景
// run
director->runWithScene(scene); //运行这个场景
2.HelloWorld类是一个继承自层的类,.h文件里面有三个函数的声明,第二个和第三个是自己的初始化函数和构造函数,第一个是创建场景特意写的一个函数声明,HelloWorld是一个继承自层却可以创建场景的特殊类
static cocos2d::Scene* createScene();
virtual bool init();
CREATE_FUNC(HelloWorld);
3.HelloWorld.cpp文件有两个函数的定义,分别是.h文件里面第一个和第二个函数的定义,把自己的构造函数的定义省略了
Scene* HelloWorld::createScene()
{
auto scene = Scene::create(); //创建一个场景实例
auto layer = HelloWorld::create(); //创建一个HelloWorld类型的层实例,这里会调用默认的构造函数和HelloWorld::init函数
scene->addChild(layer); //把这个层实例添加到了场景实例中
return scene; //返回场景实例
}
4..HelloWorld.cpp文件中的init函数的定义,是HelloWorld类自己的初始化定义,在HelloWorld::create()被调用时调用,是对实例层的定义
bool HelloWorld::init()
{
if ( !Layer::init() ) //先执行父类init
{
return false;
}
auto rootNode = CSLoader::createNode("MainScene.csb"); //创建一个节点(其实可以是各种类型的节点,Node,Sprite...)
addChild(rootNode); //添加节点到层实例
return true; //init成功,返回true
}
场景切换的步骤
1.要实现切换就要有多个场景,所以创建一些场景类,像GameStar和GameOver还有GameScene,这些场景类是继承自层的,且它的写法要和HelloWorld类的写法一样,在.h文件中声明的函数要有三个,可以对函数参数进行适当的添加和改变。
static cocos2d::Scene* createScene();
virtual bool init();
CREATE_FUNC(GameOver);
2.在场景类的.cpp文件中对这三个函数进行定义
Scene* GameOver::createScene()
{
auto scene = Scene::create(); //创建一个场景实例
auto layer = GameOver::create(); //创建一个GameOver类型的层实例,这里会调用默认的构造函数和GameOver::init函数
scene->addChild(layer); //把这个层实例添加到了场景实例中
return scene; //返回场景实例
}
bool GameOver::init()
{
if ( !Layer::init() ) //先执行父类init
{
return false;
}
auto sprite = Sprite::create("gameover.png"); //创建一个节点(其实可以是各种类型的节点,Node,Sprite...)
sprite->setPosition(50,50);
addChild(sprite); //添加节点到层实例
return true; //init成功,返回true
}
3.在某个事件监听器中用这个语句切换,当判定游戏结束时就切换到游戏结束界面
Director::getInstance()->replaceScene(GameOver::createScene(_heroCount, 20));
有时候我们要让场景切换附加某种特效,比如淡入淡出,就用
auto scene = GameScene::createScene();
Director::getInstance()->replaceScene(TransitionFade::create(2, scene));;
注意:
刚开始的时候,节点的添加可以直接在HelloWorld的init函数的定义中直接auto相应的对象并获得实例,再把实例添加到HelloWorld层中来显示,这里还要设置节点的位置(节点的大小还有其他属性在各自类的init函数中定义),后期要把这些节点的添加代码另外用一个GameController类来管理
关于Cocos2d-x项目运行的过程和场景切换步骤的更多相关文章
- log4j 日志信息的引入(通用版)——解决项目运行过程中的日志信息
定义 log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进程 ...
- React Native 项目运行在 Web 浏览器上面
React Native 的出现,让前端工程师拥有了使用 JavaScript 编写原生 APP 的能力.相比之前的 Web app 来说,对于性能和用户体验提升了非常多. 但是 React Nati ...
- ionic 运行过程中动态切换API服务器地址
ionic 运行过程中动态切换API服务器地址 keywords: ionic,phonegap,cordova,网络制式,动态切换,变更,API,服务器地址,$resource,localstora ...
- Eclipse 中构建 Maven 项目的完整过程 - SpringBoot 项目
进行以下步骤的前提是你已经安装好本地maven库和eclipse中的maven插件了(有的eclipse中已经集成了maven插件) 一.Maven项目的新建 1.鼠标右键---->New--- ...
- 使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化
一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...
- django-celery定时任务以及异步任务and服务器部署并且运行全部过程
Celery 应用Celery之前,我想大家都已经了解了,什么是Celery,Celery可以做什么,等等一些关于Celery的问题,在这里我就不一一解释了. 应用之前,要确保环境中添加了Celery ...
- 【转载】使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化
一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...
- 关于Scrapy爬虫项目运行和调试的小技巧(下篇)
前几天给大家分享了关于Scrapy爬虫项目运行和调试的小技巧上篇,没来得及上车的小伙伴可以戳超链接看一下.今天小编继续沿着上篇的思路往下延伸,给大家分享更为实用的Scrapy项目调试技巧. 三.设置网 ...
- Atitit linux获取项目运行环境版本
Atitit linux获取项目运行环境版本 1.1. Nginx版本1 1.2. Php版本1 1.3. Mysql版本2 1.4. Redis版本2 1.1. Nginx版本 [root@iZ25 ...
随机推荐
- PLSQL_统计信息系列03_统计信息的收集
20150506 Created By Baoxinjian
- android自定义控件实例
很多时候android常用的控件不能满足我们的需求,那么我们就需要自定义一个控件了.今天做了一个自定义控件的实例,来分享下. 首先定义一个layout实现按钮内部布局: 01 <?xml ver ...
- Solutions for the Maximum Subsequence Sum Problem
The maximum subarray problem is the task of finding the contiguous subarray within a one-dimensional ...
- Linux中网络通信中 使用的结构体
"+++++++++++++++++++++++++ Linux TCP/UDP通信中的结构体 +++++++++++++++++++++++++++++++++++++++" s ...
- Python之反射练习
# 什么是反射?可以用字符串的方式去访问对象的属性 class Test(): _name = "sss" def fun(self): return "Hellowor ...
- Solr4:配置Data Import,从数据库直接创建索引
1. 要求 将数据库中的数据直接创建到Solr索引中去.先做全部索引,然后定期做增量索引. 2. 环境 Solr4.4版本,Tomcat7.0版本,Oracle 11g,已经配置好Tomcat与Sol ...
- ISE联合modelsim功能仿真和综合后仿真
1.代码输入 (1).新建一个ISE工程,名字为count4. (2).新建一个verilog文件 (3).选择verilog module 输入file name为count4,单击next默认知道 ...
- 【Android】3.2 基本地图功能
分类:C#.Android: 日期:2016-02-04 3.2 示例2--基本地图功能 一.简介 1.地图 地图展示:普通地图(2D,3D).卫星图和实时交通图. 地图操作:可通过接口或手势控制来实 ...
- Flink articles
http://ictlabs-summer-school.sics.se/2015/slides/flink-advanced.pdf http://henning.kropponline.de/20 ...
- [转]C#通过Http发送Soap请求
/// <summary> /// 发送SOAP请求,并返回响应xml /// </summary> /// <param na ...