導演在cocos2d-x引擎裡面對應的類為ccdirector。在整個遊戲中一般只有乙個導演。在遊戲開始時,初始化ccdirector,遊戲結束時,銷毀它。ccdirector提供了管理場景的方法,如runwithscene、drawscene、pushscene和replacescene等,通過這些api可以實現在各個場景之間切換,ccdirector也可以設定或者獲取一些系統資訊,如調整opengl的相關設定,獲取螢幕的大小等。
cocos2d-x除了提供ccdirector外,還提供了ccdisplaylinkdirector。ccdisplaylinkdirector是乙個可以自動重新整理的ccdirector。ccdisplaylinkdirector繼承自ccdirector,ccdirector繼承自ccobject。
ccdirector類的主要函式解釋如下(cocos2d-x 2.0版):
ccscene* getrunningscene(void); /** 獲取當前執行的場景。ccdirector每次僅能執行乙個場景*/
double getanimationinterval(void); /** 獲取fps值(每秒幀重新整理率) */
virtual void setanimationinterval(double dvalue) = 0; /** 設定fps值 */
bool isdisplaystats(void); /** 獲取是否在螢幕底部顯示fps*/
void setdisplaystats(bool bdisplaystats); /** 設定是否在螢幕底部顯示fps */
float getsecondsperframe(); /** 獲取每渲染一幀用的時間,單位秒 */
cceglview* getopenglview(void); /** 獲取cceglview物件,用於渲染遊戲 */
void setopenglview(cceglview *pobopenglview); /** 設定cceglview物件*/
bool isnextdeltatimezero(void); /** 獲取下次增量時間是否為零? */
void setnextdeltatimezero(bool bnextdeltatimezero); /** 設定下次增量時間是否為零 */
bool ispaused(void); /** 是否暫停狀態*/
unsigned int gettotalframes(void); /** 從ccdirector啟動以來一共渲染了多少幀*/
ccdirectorprojection getprojection(void); /** 獲取opengl的projection*/
void setprojection(ccdirectorprojection kprojection); /** 設定opengl的projection*/
bool issendcleanuptoscene(void); /** 場景被替換時是否會接收到cleanup訊息。若新場景是被push進來的,舊場景不會收到cleanup訊息;若新場景是被替換進來的,舊場景將收到cleanup訊息*/
ccnode* getnotificationnode(); /** 在主場景被visit之後將被訪問的物件,這個物件必須可以執行visit selector。經常用來掛載notification物件,如ccnotifications */
void setnotificationnode(ccnode *node); /** 設定在主場景被visit之後將被訪問的物件*/
bool enableretinadisplay(bool benabelretina); /** 是否使用高畫質顯示模式*/
ccsize getwinsize(void); /** 返回opengl view的大小,單位為點*/
ccsize getwinsizeinpixels(void); /** 返回opengl view的大小,單位為畫素*/
ccsize getvisiblesize(); /** 返回opengl view可見區域的大小,單位為點。如果沒有呼叫cceglview::setdesignresolutionsize()
方法,那結果將等同於getwinsize方法*/
ccpoint getvisibleorigin(); /** 返回opengl view可見區域的原點,單位為點*/
void reshapeprojection(const ccsize& newwindowsize); /**改變projection的大小 */
ccpoint converttogl(const ccpoint& obpoint); /** 將uikit座標轉換為opengl座標*/
ccpoint converttoui(const ccpoint& obpoint); /** 將opengl座標轉換為uikit座標*/
float getzeye(void); /** ?*/
void runwithscene(ccscene *pscene); /** 指定進入director的主迴圈執行的場景。ps:僅在執行第乙個場景時呼叫,如果已經存在執行中的場景,不能呼叫本方法。本方法呼叫後將呼叫pushscene方法,然後呼叫startanimation*/
void pushscene(ccscene *pscene); /** 將執行中的場景暫停,並push到場景堆疊中,新的場景將被執行。僅當已存在乙個執行中的場景時本方法可被呼叫*/
void popscene(void); /** 從場景堆疊中pop出乙個場景,此場景將替換現在正執行的場景,而執行中的場景將被刪除。如果場景堆疊中沒有可pop的場景,執行將終止。僅當已存在乙個執行中的場景時本方法可被呼叫*/
void poptorootscene(void); /** 從場景堆疊中pop出除根場景外的所有場景,pop出的場景將替換現在正執行的場景,而執行中的場景將被刪除。如果場景堆疊中沒有可pop的場景,執行將終止。僅當已存在乙個執行中的場景時本方法可被呼叫*/
void replacescene(ccscene *pscene); /** 使用新場景替換當前場景,當前場景將終止,僅在存在當前場景時可呼叫*/
void end(void); /** 終止執行,釋放執行中的場景,需要手動移除opengl view*/
void pause(void); /** 暫停執行中的場景。場景仍然被渲染,當所有定時器將被暫停,同時為了減少cpu消耗,暫停時fps將降至每秒4幀*/
void resume(void); /** 恢復被暫停的場景,定時器被重新啟用,delta time將為0(好像遊戲未被暫停一般)*/
void stopanimation(void) = 0; /** 停止動畫。將停止渲染,主迴圈停止。如不想停止動畫渲染,使用pause方法*/
void startanimation(void) = 0; /** 主迴圈再次被觸發,在呼叫stopanimation後才能呼叫此方法。初次啟動主迴圈不能使用本方法,而是應呼叫runwithscene方法*/
void drawscene(void); /** 繪製場景,每幀都會呼叫此方法。不要手動呼叫此方法*/
void purgecacheddata(void); /** 刪除快取資料。包括cctexturecache、ccspriteframecache、cclabelbmfont快取資料*/
void setgldefaultvalues(void); /** 設定opengl的預設值*/
void setalphablending(bool bon); /** 設定是否啟用opengl的alpha通道*/
void setdepthtest(bool bon); /** 設定是否測試opengl景深*/
void mainloop(void) = 0;
void setcontentscalefactor(float scalefactor); /** 設定su***ce的大小,單位為畫素。可能和螢幕大小不一樣。如high-res裝置可能su***ce大小大於螢幕大小。僅在使用4.0以上sdk編譯時有效。*/
float getcontentscalefactor(void); /** 獲取su***ce的大小,單位為畫素*/
static ccdirector* shareddirector(void); /** 類靜態方法,獲取全域性唯一的ccdirector物件,如不存在則建立並獲取物件*/
cocos2d x 引擎 目錄結構
詳細的介紹下引擎的目錄結構 box2d 物理引擎box2d的相關源 chipnunk 物理引擎chimunk的相關源 cocos2dx cocos2d x的核心源 cocosdenshion 封裝了聲音多平台實現的原始檔 doxygen 生成doxygen專案文件時需要的配置檔案 hellolua ...
Cocos2d x底層的驅動引擎
cocos2d x的幀頻系統預設是60幀每秒。view code 1 這裡返回的單位是按毫秒計算,這個時間的wallclock時間,即1970 1 1到現在的時間差 2 static long getcurrentmillsecond 上面的方法就是計算當前時間的,而且是以毫秒為單位返回的。至於這個...
Cocos2dx 《基礎》 幀動畫
幀動畫 a.spriteframe 精靈幀。精靈幀包含了對應紋理在大的紋理區域中的位置和大小,對應紋理是否經過旋轉和偏移。根據這些幾何資訊,可以從大的紋理中找到正確的紋理區域作 為精靈幀顯示的影象。使用紋理建立精靈幀 auto tex texturecache getinstance addimag...