三,Cocos2d游戏逻辑架构
来源:互联网 发布:linux mtp挂载 编辑:程序博客网 时间:2024/05/21 21:34
我们以Helloworld工程为例,如图所示:
<span style="font-size:14px;">bool AppDelegate::applicationDidFinishLaunching() { // initialize director CCDirector* pDirector = CCDirector::sharedDirector(); CCEGLView* pEGLView = CCEGLView::sharedOpenGLView(); pDirector->setOpenGLView(pEGLView); // turn on display FPS pDirector->setDisplayStats(true); // set FPS. the default value is 1.0/60 if you don't call this pDirector->setAnimationInterval(1.0 / 60); // create a scene. it's an autorelease object //CCScene *pScene = HelloWorld::scene();CCScene* pScene = AnchorPoint::scene(); // run pDirector->runWithScene(pScene); return true;}</span>
1,CCDirector
游戏的一开始,初始化CCDirector,代码中,设置fps, 设置层(pScene), 最后runWithScene,运行场景。在游戏中,比如设置关卡等等,未进入游戏地图或者场景之前的之前的设置。
代码中,CCScene *pScene = HelloWorld::scene();这里的先将Helloworld理解为一个层, HelloWorld::scene()中创建了scene,然后返回CCScene类型的指针,将该指针交给导演,导演第一次运行这个scene,所以用runWithScene,HelloWorld是怎样变成一个层的?
//helloWorldScene.hclass HelloWorld : public cocos2d::CCLayer{public: virtual bool init(); <span style="background-color: rgb(255, 204, 204);"> static cocos2d::CCScene* scene();</span> void menuCloseCallback(CCObject* pSender); CREATE_FUNC(HelloWorld);};static cocos2d::CCScene* scene();
//HelloWorld.cppCCScene* HelloWorld::scene(){ // 'scene' is an autorelease object CCScene *scene = CCScene::create(); // 'layer' is an autorelease object HelloWorld *layer = HelloWorld::create(); // add layer as a child to scene scene->addChild(layer); // return the scene return scene;}
2,CCSene
<span style="font-family:Microsoft YaHei;font-size:14px;"></span>
首先,HelloWorld是继承与CCLayer,所以它具备层的属性,HelloWorld的本质也就是一个层,在.cpp中写了scene的创建,scene是由SSCene中的create创建的,因为Helloworld已经是层了,所以直接调用HelloWorld中的create,创建层,scene->addChild(layer); 将这个创建好的层加到这个scene中, 并且返回scene,也就是我们在AppDelegate中使用到的scene。
在.h中的CREATE_FUNC(HelloWorld);这是一个宏定义的函数。其中,new了一个HelloWorld的内存,用该指针纸箱CCLayer中的init(), 之前已经讲过,HelloWorld继承了CCLayer,(子类指针指向父类方法)主要完成HelloWorld对象的构造和初始化;
3,CCLayer
场景中有不同的层,在游戏中,我们可以将精灵(主角,障碍,背景等)加到不同的层中。CCLayer是被加载到CCSene中的。
在Helloworld::init()中,直接使用CCLayer::init()(其实在创建HelloWorld时,我们已经完成CCLayer的init了吧), 层创建成功后,借助CCDirector获取屏幕的大小,创建精灵, 设置精灵位置等;
4,CCSprite
精灵就是游戏中所具备元素,比如主角,怪物,障碍等, 精灵是被加到层上的,CCSprite是被加载到CCScene中的。
一个导演同一时间只能运行一个场景, 一个场景当中, 可以同时加载多个层,一个层同时可以加载多个精灵,并且层中也可以加载层。
- 三,Cocos2d游戏逻辑架构
- 我的Cocos2d-x学习笔记(三)游戏逻辑架构与HelloWorld分析
- 1 游戏逻辑架构,Cocos2d-x游戏项目创建,HelloWorld项目创建,HelloWorld程序分析,(CCApplicationProtocol,CCApplication,AppDeleg
- cocos2d-x游戏主要逻辑和结构
- cocos2d-x游戏主要逻辑和结构
- [cocos2d-x] -- cocos2d-x游戏主要逻辑和结构
- Cocos2d-X游戏开发(三)
- 游戏服务器架构简述--逻辑服务器
- 游戏底层逻辑,运动&&寻路(三)
- (cocos2d-js游戏)测试你的反应速度----------基本逻辑(上)
- 4、cocos2d-Lua的demo--游戏逻辑GameView
- cocos2d-x游戏开发之三
- cocos2d-x游戏开发(三)游戏主循环
- Cocos2D iOS之旅:如何写一个敲地鼠游戏(十):创建游戏逻辑
- Cocos2D iOS之旅:如何写一个敲地鼠游戏(十一):完善游戏逻辑
- 架构逻辑
- 扑克游戏架构及其实现(三)
- 游戏引擎的三种架构方式
- HDU 5781 ATM Mechine 多校赛 概率dp
- 我们聊一聊CountDownLatch
- Unity3D Shader 入门
- MySql(一入门)
- SparkMLlib----数理统计的基本概念
- 三,Cocos2d游戏逻辑架构
- 《Android开发艺术探索》之View的事件体系和工作原理学习笔记
- Qt---多种方式读写二进制文件
- 2016/08/03 面向对象
- MEAN Tutorial
- UOJ#37 主旋律 题解
- 对《浅谈PCA 人脸识别》的一点补充
- Scikit-learn入门
- 如何使用Android studio生成APK