2011-09-08 78 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