Cocos2d-x 导演类CCDirector
导演类也是一个单例,有两大作用,
一是设置主窗口的显示属性(比如垂直或水平、是否显示FPS)
二是管理、显示场景。
之前提到过,场景是树的根节点,一个游戏可以同时存在多个树,但被激活的只能有一个
导演类的实现方法是:将所有树的根节点(即场景对象)保存在一个堆栈中(array),最后进栈的就是当前激活的场景,当需要切换场景时,导演通过进栈、出栈或替换的方式实现。
方法
CCDirector* sharedDirector(void);
获取当前的CCDirector唯一实例
float getAnimationInterval()
获取FPS(Frames Per Second)值
-(void) setAnimationInterval(double dValue);
获取FPS(Frames Per Second)值
unsigned int getTotalFrames(void);
Director开始后调用了多少帧
bool isDisplayStats(void);
是否在屏幕底部显示FPS
-(void) setDisplayStats(bool bDisplayStats);
设置在屏幕底部显示FPS
GLView* getOpenGLView(void)
获取CCEGLView,当一切条件提供
-(void) setOpenGLView(GLView *openGLView);
设置CCEGLView
bool isPaused(void);
是否暂停
Projection getProjection(void)
获取OpenGL的Projection
-(void) setProjection(Projection projection);
设置OpenGL的Projection
-(void) setViewport();
设置OpenGL的Viewport
bool isSendCleanupToScene()
场景替换时是否接收到Cleanup事件
若新场景是push进来的,旧场景不会接收到Cleanup事件
若新场景是replace进来的,旧场景会接收到Cleanup事件
CCSize getWinSize(void);
获取OpenGL View的大小 单位为点
CCSize getWinSizeInPixels(void);
获取OpenGL View的大小 单位为像素
CCSize getVisibleSize();
获取OpenGL View显示区域大小 单位为点
如果没调用CCEGLView::setDesignResolutionSize()则值和getWinSize相等
CCPoint getVisibleOrigin();
获取OpenGL View显示区域大小 单位为点
CCPoint convertToGL(const CCPoint& obPoint);
将UIKit坐标体系转换成OpenGL坐标体系
CCPoint convertToUI(const CCPoint& obPoint);
将OpenGL坐标体系转换成UIKit坐标体系
-(void) runWithScene: (CCScene*)scene
将场景对象压入栈中,并激活(此时不能有已经激活的场景,因此该方法常用于刚进游戏时)。
-(void) replaceScene: (CCScene*)scene
替换当前激活的场景,同时将旧场景从堆栈中删除,新场景压入堆栈。
-(void) pushScene: (CCScene*) scene
添加新的场景进栈,并将其激活。
-(void) popScene
当前激活的场景出栈,激活上一个场景。
-(void) popToRootScene(void);
从堆栈中弹出所有场景,直到到队列中的根场景。这个场景将代替正在进行的场景
-(void) pause(void);
暂停场景
-(void) resume(void);
恢复暂停的场景
-(void) stopAnimation(void);
停止动画
-(void) startAnimation(void);
开始动画
-(void) drawScene(void);
渲染、绘制场景
-(void) purgeCachedData(void);
删除缓存的数据
-(void) setGLDefaultValues(void);
设置OpenGL的默认值
-(void) setAlphaBlending(bool bOn);
设置是否启动OpenGl的alpha通道
-(void) setDepthTest(bool bOn);
设置是否测试景深
网友评论