cocos2D单例
单例(singleton) 是一个很易于理解的概念。在 Cocos2d-x 引擎中,我们能看到大量单例的身影,
它们大部分出现在一些系统资源管理类中。单例模式保证了全局有且只有一个实例对象,保证自动地初始化该对象,使得
程序在任何时候任何地方都可以访问、获取该对象。
例如,Cocos2d-x 的游戏流程控制器 CCDirector 是一个独一无二的控制器,用于切换游戏场景。换句话说,不可能同时存
在两个 CCDirector 实例。
在这种情况下, Cocos2d-x 采用了单例的技巧。用户可以通过类提供的静态方法获取独一无二的实例,而不需要自己来创建。
观察 CCDirector 的代码:
static CCDisplayLinkDirector s_SharedDirector;
CCDirector* CCDirector::sharedDirector(void)
{
static bool s_bFirstUseDirector = true;
if (s_bFirstUseDirector)
{
s_bFirstUseDirector = false;
s_SharedDirector.init();
}
return &s_SharedDirector;
}
可以发现,CCDirector 维护了一个静态的 CCDirector 实例,在第一次使用前初始化。为了访问 CCDirector 控制器,我们
可以使用如下代码:
CCDirector::sharedDirector()->replaceScene(newScene);