Cocos2d-x 3.0final 終結者系列教程05-AppDelegate入口類

來源:互聯網
上載者:User

標籤:資料   pause   複用   模式   get   protocol   .mm   void   檔案   

下面是Cocos2d-x的程式入口:

class  AppDelegate : privatecocos2d::Application

{

public:

    AppDelegate();

    virtual ~AppDelegate();

    virtual bool applicationDidFinishLaunching();

    virtual void applicationDidEnterBackground();

    virtual void applicationWillEnterForeground();

};

說明:

該類繼承了cocos2d::Application。

class CC_DLL Application :public ApplicationProtocol

.......

在每一個不同的平台都會ApplicationProtocol的實作類別,原始碼在:

cocos2d-x-3.0/cocos/2d/platform檔案夾下。大家能夠具體閱讀

各平台都會有自己的入口函數(比如main)

在main 中會建立一個某平台的表單,之後建立AppDelegate的執行個體,

所以在整個Cocos2d-x中AppDelegate就是一個單例模式:

static AppDelegate s_sharedApplication;(比方在在Mac平台的AppController.mm中)

然後在Application的實現中,例如以下:

Application* Application::sm_pSharedApplication =0;

Application::Application()

{

    CC_ASSERT(!sm_pSharedApplication);

    sm_pSharedApplication =this;

}

Application::~Application()

{

    CC_ASSERT(this ==sm_pSharedApplication);

    sm_pSharedApplication =0;

}

//3.0之後用這種方法

Application* Application::getInstance() 

{

    CC_ASSERT(sm_pSharedApplication);

    returnsm_pSharedApplication;

}

我們在編程中僅僅須要定義這個類處理3個回調方法就好了,不同平台的表單訊息大概分了3種:

1。系統平台的表單建立完畢

2。系統通平台的表單被蓋住將進入後台執行

3。系統平台的表單恢複到前台

分別相應了AppDelegate中的幾個方法

    virtual bool applicationDidFinishLaunching();

    virtual void applicationDidEnterBackground();

    virtual void applicationWillEnterForeground();

普通情況下在applicationDidFinishLaunching方法中:

  1.初始化導演

  2.建立第一個情境

  3.啟動這個情境

然後,我們看Application中的run方法(是系統平台的main方法調用的該方法)

int Application::run()

{

    if (applicationDidFinishLaunching()) 

    {

        [[CCDirectorCallersharedDirectorCaller] startMainLoop];

    }

    return 0;

}

因此,這種方法運行完畢後。Cocos2d-x就開始了主邏輯迴圈。

當android,ios平台來電話。就會有新表單蓋住當前表單,applicationDidEnterBackground就會被調用

當windows,mac平台最小化,applicationDidEnterBackground就會被調用

一般在這種方法中處理:

讓全部的螢幕動作停下來

讓全部的音樂和音效停下來

(有時候要儲存當前遊戲狀態持久化到磁碟)

applicationWillEnterForeground中處理

讓全部螢幕動作繼續

讓有音樂和音效繼續

(恢複使用者資料)

---------------------------------總結----------------------------

從這個角度看,學習Cocos2d-x要比學android ,ios還要簡單

onCreate

onStart

onResume

onPause

onStop

onDestroy

Android居然要搞這麼多。

Cocos2d-x 3.0final 終結者系列教程05-AppDelegate入口類

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.