Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / cocos2d使用半单例

cocos2d: 使用半单例把MultiLayerScene设置成半单例,目的是让别的对象可以直接访问MultiLayerScene
  1. static MultiLayerScene* multiLayerSceneInstance;  
  2.   
  3. +(MultiLayerScene*) sharedLayer  
  4. {  
  5.     NSAssert(multiLayerSceneInstance != nil, @"MultiLayerScene not available!");  
  6.     return multiLayerSceneInstance;  
  7. }  
  8.   
  9. //初始化MultiLayerScene  
  10. -(id) init  
  11. {  
  12.     if ((self = [super init]))  
  13.     {  
  14.         multiLayerSceneInstance = self;  
  15.         // GameLayer层  
  16.         GameLayer* gameLayer = [GameLayer node];  
  17.         [self addChild:gameLayer z:1 tag:LayerTagGameLayer];  
  18.   
  19.     }  
  20.     return self;  
  21. }  
  22.   
  23. -(void) action1  
  24. {  
  25.     // do something  
  26. }  
  27.   
  28. -(void) dealloc  
  29. {  
  30.     multiLayerSceneInstance = nil;  
  31.   
  32.     // don"t forget to call "super dealloc"  
  33.     [super dealloc];  
  34. }  
访问半单例方法,如在GameLayer层中可以这样访问MultiLayerScene中的action1方法:
  1. [[MultiSceneLayer shareLayer] action1];  
半单例与普通的单例类不同,任何时候只存在一个MultiLayerScene的实例,它不能被用来初始化MultiLayerScene。