2011-09-08 83 views
1

我有一个类有一个方法,可以在我的游戏中创建我所有的精灵,身体,敌人,舞台背景。 init调用所有这些方法并在开始时创建它们。在cocos2d中管理游戏阶段

现在,我想添加更多的阶段,并以正确的方式这样做。

我正在考虑创建一个名为game-handler的新类,所以我有2个类,我之前提到的那个类将添加精灵和身体,当我需要去下一个级别时,我会打电话给与当前阶段的游戏处理程序,并返回新阶段的图像和坐标的字符串。

就像每个阶段的class1调用处理程序,获取正确的值加载,并根据该值添加精灵和身体。 是否正确? 内存管理会好吗?

非常感谢。

回答

2

我这样做的方式是让我的自定义CCScene子类在init上获取一些配置值。然后我创建另一个类,作为一个管理员,为每个新阶段实例化这个CCScene,并将其传递给CCDirector的方法replaceScene。这样,每个阶段都是CCScene类的新实例,因此不存在未释放内存或重用变量值的风险。

在管理器类看起来像一个建议:

@protocol GameManager : NSObject { 
    int currentLevel; 
    NSMutableArray *stageConfigs; 
} 

- (id)init; 

+ (GameManager *)sharedManager; 

- (void)goToLevel:(int)levelNum; 

- (void)goToNextLevel; 

@end 

@implementation GameManager 

... 

- (void)goToLevel:(int)levelNum { 
    StageConfig *config = (StageConfig *)[stageConfigs objectAtIndex:levelNum]; 

    GameScene *scene = [[GameScene alloc] initWithConfig:config]; 
    [[CCDirector sharedDirector] replaceScene:scene]; 
    [scene release]; 
} 

... 

@end