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。