Я постараюсь сделать это как можно более простым.
Для начала добавьте новый метод init к вашей сцене уровня, который принимает в качестве аргумента имя карты, например:
// LevelScene.h
- (id)initWithTilemapName:(NSString *)tilemap;
// LevelScene.m
- (id)initWithTilemapName:(NSString *)tilemap
{
if ((self = [super init]))
{
self.tileMap = [CCTMXTiledMap tiledMapWithTMXFile:tilemap];
// ...
Затем, чтобы сделать создание меню более динамичным, добавьте свой элемент в цикл выполнения и свяжите их с тегом (чтобы можно было их различать):
CCMenu *menu = [CCMenu menuWithItems:nil];
[self addChild:menu];
for (int i = 1; i <= 25; i++)
{
CCMenuItemSprite *lvlItem =
[CCMenuItemSprite itemFromNormalSprite:[GameButton buttonWithText:[NSString stringWithFormat:@"lvl%d",i]] selectedSprite:NULL target:self selector:@selector(lvl_start:)];
[lvlItem setTag:i];
[menu addChild:lvlItem];
}
Добавить в финишер селектора, извлечь элемент меню и создать сцену с соответствующей ей картой тайлов.
- (void)lvl_start:(CCMenuItemS *)item
{
LevelScene *yourScene = [[LevelScene alloc] initWithTilemapName:[NSString stringWithFormat:@"lvl%d.tmx",item.tag];
[[CCDirector sharedDirector] replaceScene:yourScene];
[yourScene release];
}
Это всего лишь пример, чтобы дать вам идею, я ее не проверял. Но я надеюсь, что это поможет вам. ;)