cocos2d x引擎基礎使用(2) 導演類

2021-08-18 08:36:44 字數 4229 閱讀 2447

導演在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...