Cocos2d-x 3.x程序结构

Cocos2d-x 3.x程序结构

 

Cocos2d程序中的资源由Director类,Director类中可以有多个场景,每个场景中可以包含多个层,每个层可以包含精灵、层、按钮、Label等等元素。

 

Director类

Director是一个抽象类有4个纯虚函数,DisplayLinkDirector继承至Director类,实现了Director类的4个纯虚函数,mainLoop、setAnimationInterval、startAnimation、stopAnimation。

DisplayLinkDirector采用单例模式,整个程序只有一个示例,在程序第一次调用Director::getInstance时实例化。

 

Director类负责管理调度整个程序,包括场景管理,调度器的管理,动画的管理,事件的管理,纹理的管理等等。

 

场景管理

Director类有一个场景栈,通过这个场景栈控制场景的运行,切换,删除等等。

void runWithScene(Scene *scene);//启动游戏并运行场景,第一个场景调用此函数

void pushScene(Scene *scene);//往场景栈中压入场景并替换当前场景

void popScene();//弹出当前场景

void popToRootScene();//弹出到根场景,例如:回到主菜单场景只需调用这个函数

void popToSceneStackLevel(int level);//弹出指定层次的场景

void replaceScene(Scene *scene);//运行scene,替换当前场景

 

游戏中可以有多个场景,但同时有且只有一个场景运行。例如一个主菜单场景,一个游戏场景,点击开始游戏后进入游戏场景,主菜单场景则切换到后台运行。游戏中的第一个场景需要调用Director::runWithScene函数,因为Director::runWithScene会调用Director::startAnimation();启动动画。

 

   void end();//结束,程序释放所有场景

   void pause();//暂停运行场景动画运行,帧率也会降到4,节省CPU

   void resume();//恢复场景运行

 

其他管理类

Scheduler *_scheduler; //管理程序中的调度器,Scheduler。

ActionManager *_actionManager; //管理动画

EventDispatcher* _eventDispatcher; //管理事件

TextureCache *_textureCache; //管理纹理,程序中所有的纹理都保存这里面

 

Layer类

层,在一个场景中可以有多个层,例如游戏场景中的控制按钮为一个层,地图为一个层,这样当地图移动时,只需要地图层移动,控制按钮层则无需要移动。

 

class Layer : public Node

通常可以直接继承Layer类,添加元素,创建自己的Layer类。Layer类提供了虚函数还处理触摸和按键消息。继承Layer类时可以实现相应的虚函数处理触摸或者按键消息。

 

class LayerColor : public Layer, public BlendProtocol

纯色背景的层。

 

class LayerGradient : public LayerColor

渐变色彩的层

 

class LayerMultiplex : public Layer

有类似场景管理功能的层,可以包含多个层,但是同时只有一个层可以显示,可以通过switchTo切换到其他层。

 

class Menu : public Layer

菜单层,可以添加菜单按钮,MenuItem对象。

 

元素

class Sprite : public Node, public TextureProtocol

精灵类,显示图片,动画,可以实现移动、旋转、缩放等。

 

class MenuItem : public Node

菜单按钮,以下类继承至该类

class CC_DLL MenuItemLabel : publicMenuItem

class CC_DLL MenuItemAtlasFont : publicMenuItemLabel

class CC_DLL MenuItemFont : publicMenuItemLabel

class CC_DLL MenuItemSprite : publicMenuItem

class CC_DLL MenuItemImage : publicMenuItemSprite

class CC_DLL MenuItemToggle : publicMenuItem

 

class Label : public Node, public LabelProtocol, publicBlendProtocol

标签类,由于OpenGL不支持直接显示文字,所以Label内部会将文字转换成图片进行显示。支持三种方式的标签,1、通过平台的GUI系统生成文字图片;2、通过一张图片包含所需的字母或数字,通常可以使用这种方式显示数字。3、使用Char Map来实现。

 

cocos2d::ui

UI元素,文本框、按钮、滚动条、选择框、WebView等等。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值