我正在做一個小型的Cocos2d-x項目,其中我受到了在Cocos2d-x中由CCDirector::sharedDirector()
方法和其他共享實例實現的「單例」模式的啓發。例如,在CCDirector.cpp
我們有如何輕鬆清除cocos2d-x中的自定義共享實例?
static CCDisplayLinkDirector *s_SharedDirector = NULL;
// ...
CCDirector* CCDirector::sharedDirector(void)
{
if (!s_SharedDirector)
{
s_SharedDirector = new CCDisplayLinkDirector();
s_SharedDirector->init();
}
return s_SharedDirector;
}
void CCDirector::purgeDirector()
{
// cleanup scheduler
getScheduler()->unscheduleAll();
// ...
// delete CCDirector
release();
}
的purgeDirector()
方法清除所有其他共享的情況下,像動畫共享高速緩存,共享子畫面幀緩存等等 - 所有鑄在相同的模具。我想自己做幾個,就像共享遊戲大廳一樣。
我寧可不修改CCDirector,因爲它肯定會有變化。
是否有任何自然的地方我可以把我的清除代碼?當cocos2d::CCDirector::sharedDirector()->end()
被調用或類似時,是否可以撥打回叫電話?謝謝!
感謝您的輸入!我完全同意Singleton模式的缺陷。考慮到我的需要,我正在考慮去參加一個單身遊戲:一個'GameLobby',它將完成所有與服務器端的交談。這是可取的,因爲玩家可能同時進行多個遊戲,因此中央實例可以建立活動遊戲列表以及將遊戲數據推送到「遊戲」類。我會再考慮一遍。 – conciliator