0

在级别选择屏幕中有菜单项并根据所选项目级别启动...这里是代码..其中 selectedLevel 是 menuItem 的索引。

if(selectedLevel==0) 
{   
activeScene = [level2_1Scene node]; 
[[CCDirector sharedDirector] pushScene:activeScene]; 
    } 
else if(selectedLevel==1) 
{   
activeScene = [level2_2Scene node]; 
[[CCDirector sharedDirector] pushScene:activeScene]; 
    } 
else if(selectedLevel==2) 
{    
activeScene = [level2_3Scene node]; 
[[CCDirector sharedDirector] pushScene:activeScene];

... 以此类推,适用于所有级别

我怎么能用简单的关卡场景名称格式来做到这一点,像这样不起作用

activeScene = [[NSString stringWithFormat:@"level2_%d",selectedLevel+1] node]; 
[[CCDirector sharedDirector] pushScene:activeScene]; 
4

3 回答 3

2

我的一个工厂的这个片段可能在适应后可以做你的伎俩:

Skill *skkk = (Skill *) NSClassFromString(className);

if (skkk) {
    return (Skill *) [[skkk class] skillWithSpec:ss];
} else {
    MPLOGERROR(@"*****************************************************************");
    MPLOGERROR(@"             no class with name %@", className);
    MPLOGERROR(@"*****************************************************************");
    return nil;
}
于 2013-03-21T10:19:19.937 回答
0

这对我有用,,,

    NSString *level=[NSString stringWithFormat:@"level2_%dScene",selectedLevel+1];   
    Class sceneClass = NSClassFromString(level);
    activeScene = (bunnyScene*)[sceneClass node] ;
    [[CCDirector sharedDirector] replaceScene:activeScene];
于 2013-03-21T10:38:50.057 回答
0

我认为这可能是您正在寻找的:

switch(selectedLevel)
{
    case 0:
    activeScene = [level2_1Scene node];
    break;

    case 1:
    activeScene = [level2_2Scene node];
    break;

    // Etc....
}

if(activeScene) {
    [[CCDirector sharedDirector] replaceScene:activeScene];
}
于 2013-03-30T21:23:36.887 回答