cococos 2 dxゲームエンジンを自分で書く(一)--エンジン入口


網易の2番目のプロジェクトはすでにオンラインになって2ヶ月近くになり、3番目のプロジェクトに着手しています.
最初のプロジェクトは原生のappで、cocos 2 dx 2を使用しています.2.4やった;
2つ目のプロジェクトはhtml 5ゲームで、予研の時間にcococos 2 dxとegretを同時に使って、最終的にegretを選んだ.
3つ目の項目は、元のappとhtml 5を計算し、egretの元のappが10フレーム以上走ることができることを考慮し、cocos 2 dxに戻った.
以前はcocosを使っていたが、今は彼のソースコードとフレームワークを再検討し、自分で簡単なdemoを実現しようとしている.
c/c++プロジェクトはmain関数から実行されます.まずmain関数を見てください.
    AppDelegate app;
    return Application::getInstance()->run();

main関数では、AppDelegateのオブジェクトappが定義されていますが、このオブジェクトは使用されていません.なぜですか.
親アプリケーションを見ると、アプリケーションは単一の例であるため、appのオブジェクトを作成するときに親のコンストラクション関数を呼び出し、コンストラクション関数で静的オブジェクトに値を割り当て、そのオブジェクトを取得してrun()メソッドを呼び出すことがわかります.
自分で簡単なdemoを書きます.たぶんそうです.
//main.cpp
#include "AppDelegate.h"
#include "Application.h"

int main() {
    AppDelegate app;
    return Application::getInstance()->run();
}

// AppDelegate.h
#ifndef __APP_DELEGATE__
#define __APP_DELEGATE__

#include "Application.h"

class AppDelegate: private Application {

};

#endif

//Application.h
#ifndef __APPLICATION__
#define __APPLICATION__

#include <iostream>

class Application {
    public:
        Application() {
            sm_pSharedApplication = this;
        }   
        static Application* getInstance() {
            return sm_pSharedApplication;
        }   
        int run() {
            std::cout << "App run ..." << std::endl; 
        }   
    protected:
        static Application * sm_pSharedApplication;
};

Application * Application::sm_pSharedApplication = 0;

#endif

コンパイル実行では、「Apprun...」が出力されていることがわかります.
添付コード:demo 1
最後に、2番目のプロジェクトhtml 5ゲームのリンクを添付します.http://wkgl.163.com/