cocos2d: 使用半单例把MultiLayerScene设置成半单例,目的是让别的对象可以直接访问MultiLayerScene
- static MultiLayerScene* multiLayerSceneInstance;
-
- +(MultiLayerScene*) sharedLayer
- {
- NSAssert(multiLayerSceneInstance != nil, @"MultiLayerScene not available!");
- return multiLayerSceneInstance;
- }
-
- //初始化MultiLayerScene
- -(id) init
- {
- if ((self = [super init]))
- {
- multiLayerSceneInstance = self;
- // GameLayer层
- GameLayer* gameLayer = [GameLayer node];
- [self addChild:gameLayer z:1 tag:LayerTagGameLayer];
-
- }
- return self;
- }
-
- -(void) action1
- {
- // do something
- }
-
- -(void) dealloc
- {
- multiLayerSceneInstance = nil;
-
- // don"t forget to call "super dealloc"
- [super dealloc];
- }
访问半单例方法,如在GameLayer层中可以这样访问MultiLayerScene中的action1方法:
- [[MultiSceneLayer shareLayer] action1];
半单例与普通的单例类不同,任何时候只存在一个MultiLayerScene的实例,它不能被用来初始化MultiLayerScene。