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);
設置是否測試景深