2013-03-21 65 views
0

在水平选择屏幕上具有菜单项并取决于选定的项目级别开始...这里是代码..其中selectedLevel是menuItem的索引。问题与选择水平表单水平选择屏幕(Cocos2d + box2d)

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]; 

回答

0

这对我有用,,,

NSString *level=[NSString stringWithFormat:@"level2_%dScene",selectedLevel+1]; 
    Class sceneClass = NSClassFromString(level); 
    activeScene = (bunnyScene*)[sceneClass node] ; 
    [[CCDirector sharedDirector] replaceScene:activeScene]; 
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; 
} 
0

我想这可能是你在找什么:

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

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

    // Etc.... 
} 

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