[置顶] 【cocos2d-x入门实战】微信飞机大战之二:别急,先处理好CCScene和CCLayer的关系
转载请表明地址:http://blog.csdn.net/jackystudio/article/details/11713197
在整个游戏开始之前,我们先看一下HelloWorld示例中CCScene和CCLayer之间的关系是怎么处理的。
//HelloWorldScene.h
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" class HelloWorld : public cocos2d::CCLayer
{
public:
virtual bool init(); static cocos2d::CCScene* scene();//通过此函数获取场景指针 LAYER_CREATE_FUNC(HelloWorld);
}; #endif // __HELLOWORLD_SCENE_H__
//HelloWorldScene.cpp
#include "HelloWorldScene.h" USING_NS_CC; CCScene* HelloWorld::scene()
{
CCScene *scene = CCScene::create();//创建并返回场景指针 HelloWorld *layer = HelloWorld::create(); scene->addChild(layer); return scene;
} bool HelloWorld::init()
{
if ( !CCLayer::init() )
{
return false;
}
return true;
}
cocos2d-x的示例中采用的是创建一个继承于CCLayer的HelloWorldScene,然后通过HelloWorldScene这个Layer中提供一个产生CCScene的指针的静态函数,获取场景的指针,载入场景。
但是我们这里并不打算这么做,通过一个CCLayer的子类来获取CCScene的指针,这样用起来很奇怪,所以,我把CCScene和CCLayer严格的分开来使用。
1.创建GameScene类继承于CCScene。
2.创建GameLayer类继承于CCLayer。
3.为GameScene添加成员变量 GameLayer* _gameLayer。
4.在GameScene的init里把_gameLayer add到场景中。
这样就能把GameScene和GameLayer结合起来,同时又分工独立。在后面的其他场景也是这样进行处理的。GameScene的结构如下。
//GameScene.h
#pragma once #include "cocos2d.h"
#include "GameLayer.h" USING_NS_CC; class GameScene :
public CCScene
{
public: GameScene(void); ~GameScene(void); SCENE_CREATE_FUNC(GameScene); virtual bool init(); GameLayer* _gameLayer;//把GameLayer暴露给GameScene };
//GameScene.cpp
#include "GameScene.h" GameScene::GameScene(void)
{
_gameLayer=NULL;
} GameScene::~GameScene(void)
{
} bool GameScene::init()
{
bool bRet=false;
do
{
CC_BREAK_IF(!CCScene::init());
_gameLayer=GameLayer::create();//在这里获取GameLayer实例
CC_BREAK_IF(!_gameLayer);
this->addChild(_gameLayer);//add _gameLayer到场景中
bRet=true;
} while (0); return bRet;
}
而GameLayer就不再产生场景指针了。导演类直接从GameScene中获取场景指针。GameLayer其余部分的结构和HelloWorldScene就一致了。
//AppDelegate.cpp
CCScene *pScene = GameScene::create();
pDirector->runWithScene(pScene);
[置顶] 【cocos2d-x入门实战】微信飞机大战之二:别急,先处理好CCScene和CCLayer的关系的更多相关文章
- [置顶] 【cocos2d-x入门实战】微信飞机大战之六:子弹层的处理
这一篇将会处理完子弹层的其他要点. 1.子弹的初始位置 子弹的初始位置在飞机的机头位置,因为飞机在游戏的过程中会随着玩家的触摸而改变其位置,所以,子弹的初始位置只能以当前飞机位置为基准进行添加. CC ...
- [置顶] 【cocos2d-x入门实战】微信飞机大战之三:飞机要起飞了
转载请表明地址:http://blog.csdn.net/jackystudio/article/details/11730601 不过明眼人一看就知道起飞的不是飞机,是背景,相对运动引起的错觉. 1 ...
- [置顶] 【cocos2d-x入门实战】微信飞机大战之四:飞机登场咯
转载请表明地址:http://blog.csdn.net/jackystudio/article/details/11757175 昨天收到了电子工业出版社寄过来的<cocos2d-x游戏开发之 ...
- [置顶] 【cocos2d-x入门实战】微信飞机大战之十三:游戏场景过渡
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12082043 游戏是实现了,但是如果有个欢迎界面和一个结束界面就更好了. 欢 ...
- [置顶] 【cocos2d-x入门实战】微信飞机大战之十二:分数的本地存储
转载请表明地址:http://blog.csdn.net/jackystudio/article/details/12036237 作为一个单机游戏,连分数存储的的功能都没有,让它怎么在单机游戏圈里混 ...
- 【一】仿微信飞机大战cocos2d-x3.0rc1
參考 [偶尔e网事] 的 [cocos2d-x入门实战]微信飞机大战 cocos2dx 2.0版本号,偶尔e网事他写的很具体,面面俱到,大家很有必要看下.能够通过以下链接跳转: cocos2d-x入 ...
- 用DIV+Css+Jquery 实现的旧版微信飞机大战。
用jquery 实现的旧版微信飞机大战. 以前一直都是做后台和业务逻辑,前端很少去做, 现在个小游戏. 方向键控制方向,Ctrl 键 放炸弹(当然你的有炸弹,哈哈)! 主要都是用div+Css实现的, ...
- Cocos2d-x 3.0final 终结者系列教程16-《微信飞机大战》实现
看到cocos2d-x推出了3.1版本号,真是每月一次新版本号,速度. 另一个好消息就是http://cn.cocos2d-x.org/上线了,祝贺!啥时候把我的视频和教程放上去呢?!! . 视频下载 ...
- 用Javascript模拟微信飞机大战游戏
最近微信的飞机大战非常流行,下载量非常高. 利用JS进行模拟制作了一个简单的飞机大战[此源码有很多地方可以进行重构和优化] [此游戏中没有使用HTML5 任何浏览器都可以运行]. 效果图: 原理:利用 ...
随机推荐
- HTML5 canvas易错点
一.画布的默认宽高 <canvas id="myCanvas" style="border:1px solid black;"> 你的浏览器不支持h ...
- [问题解决] locale::facet::_S_create_c_locale name not valid
错误: exception in initAndListen: 14043 clear tmp files caught exception exception: locale::facet::_S_ ...
- docker 数据映射方案
docker run -itd -v /data/:/data1 centos bash // -v 用来指定挂载目录, :前面的/data为本地目录,:后面的/data1 为容器里的目录: dock ...
- 二道shell面试题
1.按照给出的运行结果,编写一个名为xunhuan 的shell过程(用循环语句). 0 10 210 3210 43210 543210 6543210 76543210 876543210 2.编 ...
- 【HDU】4908 (杭电 BC #3 1002题)BestCoder Sequence ——哈希
BestCoder Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- oracle字符集
oracle server端字符集
- Handlebarsjs学习笔记
handlebarsjs官网(http://handlebarsjs.com/) 1.引入模板 在html页面中添加 <script id="entry-template&q ...
- PHP 操作redis 详细讲解转的
http://www.cnblogs.com/jackluo/p/3412670.html phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有 ...
- Python之美[从菜鸟到高手]--生成器之全景分析
yield指令,可以暂停一个函数并返回中间结果.使用该指令的函数将保存执行环境,并且在必要时恢复. 生成器比迭代器更加强大也更加复杂,需要花点功夫好好理解贯通. 看下面一段代码: def gen(): ...
- swift论坛正式上线
www.iswifting.com swift论坛正式上线.有问答专区,也有技术分享区,还有学习资料区,大家一起学习成长! 2014中国互联网大会于8月26日开幕. 政府主管部门.行业专家.企业领袖将 ...