cocos2dx进阶学习之CCDirector
继承关系
CCDirecotor -> CCObject, TypeInfo
处理主窗口消息,管理何时、何种方式执行场景。
经常被翻译成导演,负责管理整个游戏的进程推动和周边支持。
成员
inline CCScene* getRunningScene(void) { return m_pRunningScene; }
获取当前运行的场景,一个时刻只有一个场景在运行
inline double getAnimationInterval(void) { return m_dAnimationInterval; }
virtual void setAnimationInterval(double dValue) = 0;
FPS相关设置
inline bool isDisplayStats(void) { return m_bDisplayStats; }
inline void setDisplayStats(bool bDisplayStats) { m_bDisplayStats = bDisplayStats; }
在程序左下角是否显示FPS信息
inline float getSecondsPerFrame() { return m_fSecondsPerFrame; }
获取一帧的时间(秒)
inline CCEGLView* getOpenGLView(void) { return m_pobOpenGLView; }
void setOpenGLView(CCEGLView *pobOpenGLView);
设置窗口,对于CCDirector这个导演来说,CCEGLView可以类比为舞台。
inline bool isNextDeltaTimeZero(void) { return m_bNextDeltaTimeZero; }
void setNextDeltaTimeZero(bool bNextDeltaTimeZero);
inline bool isPaused(void) { return m_bPaused; }
是否暂停了
inline unsigned int getTotalFrames(void) { return m_uTotalFrames; }
帧数,自从这个导演启动后,调用的帧数
inline ccDirectorProjection getProjection(void) { return m_eProjection; }
void setProjection(ccDirectorProjection kProjection);
void reshapeProjection(const CCSize& newWindowSize);
ccDirectorProjection相关
void setViewport();
设置glViewPort
inline bool isSendCleanupToScene(void) { return m_bSendCleanupToScene; }
是否一个被替换的场景会受到cleanup消息
CCNode* getNotificationNode();
void setNotificationNode(CCNode *node);
用来显示全局消息的node,这个消息不受场景切换影响
CCDirectorDelegate* getDelegate() const;
void setDelegate(CCDirectorDelegate* pDelegate);
导演代理,提供更新接口可供用户重新实现
CCSize getWinSize(void)
CCSize getWinSizeInPixels(void);
CCSize getVisibleSize();
CCPoint getVisibleOrigin();
getWinSize与getWinSizeInPixels的差别在于是否使用DesignResolutionSize,getWinSizeInPixsels是窗口实际大小
而getWinSize是DesignResolutionSize,getVisibleSize是在有DesignResolutionSize的情况下,有对不齐的情况时不一样的值
CCPoint convertToGL(const CCPoint& obPoint);
CCPoint convertToUI(const CCPoint& obPoint);
坐标转换,从GL坐标到UI坐标的相互转换,GL坐标左下角为原点,UI坐标则是坐上角
void runWithScene(CCScene *pScene);
进入scene,这个函数在第一次进入scene时候调用
void pushScene(CCScene *pScene);
暂停当前scene,将其推入暂停scene栈,启动新的scene
void popScene(void);
弹出当前运行的scene,如果栈中还有scene,那么继续栈顶的scene,如果没有,程序退出
void popToRootScene(void);
弹出所有的scene,除了最后一个不弹
void popToSceneStackLevel(int level);
弹到某个地方,如果level为0,那么相当于程序结束,如果level为1,那么相当于popToRootScene,如果level大于栈深度,那啥也不干
void replaceScene(CCScene *pScene);
替换scene,和pushScene不一样的是,replace不在栈中保存,是直接替换
void end(void);
void pause(void);
void resume(void);
进度管理,结束,暂停,继续scene
virtual void stopAnimation(void) = 0;
virtual void startAnimation(void) = 0;
停止和开始画场景,默认实现和pause、resume相同
void purgeCachedData(void);
清空缓存,主要是CCTextureCache, CCSpriteFrameCache, CCLabelBMFont所指缓存
在cocos2dx中有不少缓存类,这些缓存类,类似舞台上的常用道具,常用道具当然放在离演员最近的地方(内存)
但是当地方(内存)不够时,导演负责指挥清除这些缓存。
void setDefaultValues(void);
void setGLDefaultValues(void);
void setAlphaBlending(bool bOn);
void setDepthTest(bool bOn);
设置一些OpenGL参数
void setContentScaleFactor(float scaleFactor);
float getContentScaleFactor(void);
设置缩放因子
virtual void mainLoop(void) = 0;
主循环,负责画scene
static CCDirector* sharedDirector(void);
获取单例的导演对象
cocos2dx进阶学习之CCDirector的更多相关文章
- cocos2dx进阶学习之场景切换
背景 在学习马里奥时,我们学习到从菜单场景到游戏场景的切换,代码如下 void CMMenuScene::OnStartCallBack( CCObject *pSender ) { CCDirect ...
- cocos2dx进阶学习之坐标转换
在cocos2dx中,有四种坐标系 GL坐标系:左下为原点,x轴向右,y轴向上 UI坐标系:左上为原点,x轴向右,y轴向下 世界坐标系:与GL坐标系相同 本地坐标系:是节点(CCNode)的坐标系,原 ...
- cocos2dx进阶学习之CCScene
继承关系 CCScene -> CCNode -> CCObject CCScene抽象了一个场景的概念,类似舞台的一幕 函数 static CCScene *create(void); ...
- cocos2dx进阶学习之屏幕适配
背景 在学习cocos2dx时,我们在main函数中发现一句代码, #include "main.h" #include "AppDelegate.h" #in ...
- cocos2dx进阶学习之CCEGLView
继承关系 CCEGLView-> CCEGLViewProtocol CCEGLView是窗口,在不同平台上有不同的实现,而CCEGLViewProtocol是CCEGLView定义的接口,所以 ...
- cocos2dx进阶学习之CCApplication
继承关系 CCApplication-> CCApplicationProtocol 类主要成员变量 static CCApplication * sm_pSharedApplication; ...
- cocos2dx进阶学习之CCAction
CCAction在cocos2dx中,抽象了节点的动作.它由CCObject派生,因此它不是渲染节点. 它经常的用法是,创建一个action,然后让某个CCNode对象(一般是精灵),去执行它. 在马 ...
- cocos2dx进阶学习之瓦片地图编辑器
之前学习了瓦片地图类,现在我们来学习下瓦片地图制作工具 这个是开源的工具,可以从网上下载,下面我们演示下怎么做地图 步骤1 将需要用到的图片放到一个目录下,比如我机器上就是d:\tiled,这些图片是 ...
- cocos2dx进阶学习之CCTMXTiledMap
继承关系 CCTMXTiledMap -> CCNode 它由CCNode派生,我们已经知道CCNode是cocos2dx的舞台对象的公共父类,所以CCTMXTiledMap也是个舞台对象 成员 ...
随机推荐
- linux select 网络模型
io模型: 同步IO: 阻塞形式,非阻塞形式(轮询).信号驱动IO.IO复用(select, poll, epoll): 异步io:aio_read() 典型场景: 1.客户端处理多种IO------ ...
- 面试题之String str = new String("abc"); 创建了几个对象
今天去面试的时候碰到了这个问题:String str = new String("abc"); 创建了几个对象,回来自己研究并查阅资料才发现答错了..网上的争论不少,有的说是两个, ...
- Linq 入门 顺带 Func与Action
Linq的优点: 查询是一种从数据源检索数据的表达式. 查询通常用专门的查询语言来表示. 随着时间的推移,人们已经为各种数据源开发了不同的语言:例如,用于关系数据库的 SQL 和用于 XML 的 XQ ...
- 文件上传 PHP
参考http://www.w3school.com.cn/php/php_file_upload.asp 文件上传实际上是一个文件复制的过程 当我们选中一个文件之后 php默认的tmp文件夹中就有 ...
- 利用反馈字段给帝国cms添加留言板功能(图文教程)
帝国cms的插件中提供信息反馈字段,很多人却不会用.这里谢寒教大家如何来给自己的帝国cms网站添加留言板功能 1.找到添加地址 2.添加字段 3.你可以在字段中添加多种字段类型(有文本域,单行文本框, ...
- SumoLogic
SumoLogic>>>Loggly. https://diyunpeng.loggly.com/setup MonitorWare http://www.monitorware.c ...
- Hbuilder 常用快捷键汇总
朋友推荐用Hbuilder编辑器,看了下Hbuilder官网和那视频,感觉牛逼哄哄的, 自己也就体验了一下,打开Hbuilder的快捷键列表,每个快捷键都体验了一下,以下展示出来的,每一个都是精华,每 ...
- Java并发编程总结4——ConcurrentHashMap在jdk1.8中的改进(转)
一.简单回顾ConcurrentHashMap在jdk1.7中的设计 先简单看下ConcurrentHashMap类在jdk1.7中的设计,其基本结构如图所示: 每一个segment都是一个HashE ...
- ZYB's Premutation(有逆序数输出原序列,线段树)
ZYB's Premutation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Othe ...
- Android中获取系统的时间
activity代码 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); set ...