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