Cocos2d iphone 选择级别窗体级别选择屏幕(Cocos2d&x2B;box2d)时出现问题

Cocos2d iphone 选择级别窗体级别选择屏幕(Cocos2d&x2B;box2d)时出现问题,cocos2d-iphone,Cocos2d Iphone,在级别选择屏幕中显示菜单项,并根据所选项目级别启动。。。下面是代码..其中selectedLevel是menuItem的索引 if(selectedLevel==0) { activeScene = [level2_1Scene node]; [[CCDirector sharedDirector] pushScene:activeScene]; } else if(selectedLevel==1) { activeScene = [level2_2Scene n

在级别选择屏幕中显示菜单项,并根据所选项目级别启动。。。下面是代码..其中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]; 

这段来自我的一家工厂的代码在改编后可能会达到你的目的:

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

if (skkk) {
    return (Skill *) [[skkk class] skillWithSpec:ss];
} else {
    MPLOGERROR(@"*****************************************************************");
    MPLOGERROR(@"             no class with name %@", className);
    MPLOGERROR(@"*****************************************************************");
    return nil;
}
这对我来说很有效

    NSString *level=[NSString stringWithFormat:@"level2_%dScene",selectedLevel+1];   
    Class sceneClass = NSClassFromString(level);
    activeScene = (bunnyScene*)[sceneClass node] ;
    [[CCDirector sharedDirector] replaceScene:activeScene];

我想这可能是你想要的:

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

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

    // Etc....
}

if(activeScene) {
    [[CCDirector sharedDirector] replaceScene:activeScene];
}