如何在cocos2d-x 項目中增加全局變量

    最近在研究如何自動運行cocos2d-x的測試工程,需要在testCpp工程中加入一個自定義的全局指針,指向現在正在運行的測試例。這個全局指針應該放哪裏好呢? 研究了一下,發現放在AppDelegate裏最好。其實這個設計是從iOS 上移植過來的,做過iOS開發的童鞋會很熟悉。代碼如下:


class  AppDelegate : private cocos2d::Application
{
public:
    AppDelegate();
    virtual ~AppDelegate();


    virtual bool applicationDidFinishLaunching();
    virtual void applicationDidEnterBackground();
    virtual void applicationWillEnterForeground();


    BaseTest* getCurrentTest();
    void setCurrentTest(BaseTest* curTest);
private:
    BaseTest* _curTest;

}; 


當然,這個全局指針不能直接暴露出來,用了getter/setter來訪問。

那麼,在程序的其他地方如何調用呢? 也很簡單:

void BaseTest::onEnter()
{
Layer::onEnter();


    AppDelegate* app = (AppDelegate *)Application::getInstance();
    app->setCurrentTest(this);

    ....

}

getInstance() 是cocos2d::Application類的靜態函數,可以直接使用。

這裏用到了C++的單例模式。





發佈了72 篇原創文章 · 獲贊 7 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章