2012-08-01 63 views
0

我不知道如何正确显示线程中的代码,所以提前感到抱歉。所以我有我的应用程序委托调用如何设置一个场景作为初始视图控制器cocos2d

[director_ pushScene:[IntroLayer scene]];

然后我introLayer做到这一点:

-(void) makeTransition:(ccTime)dt 
{ 
[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[MainMenu scene] withColor:ccBLUE]]; 
} 

然后,我有MainMenu.h和.M但他们几乎空,除了.M有:

@implementation MainMenu 

// Helper class method that creates a Scene with the GamePlay as the only child. 
+(CCScene *) scene 
{ 
    // 'scene' is an autorelease object. 
    CCScene *scene = [CCScene node]; 

    // 'layer' is an autorelease object. 
    MainMenu *layer = [MainMenu node]; 

    // add layer as a child to scene 
    [scene addChild: layer]; 

    // return the scene 
    return scene; 
} 
@end 

然后,我有一个故事板这使用导航控制器,当我打开'makeTransition'功能时,我希望打开的场景成为主菜单。在我的故事板中,我在这个主菜单上有一个播放按钮。这个播放按钮被推送到另一个视图控制器,该视图控制器属于'CCViewController'类。我有CCViewController.m和.h然后我从它创建了一个叫做cocos2dViewController.m和.h的子类。在我的cocos2dViewController.m中我打电话:

if(director.runningScene) 

    [director replaceScene:[GamePlay scene]]; 

else 

    [director pushScene:[GamePlay scene]]; 

GamePlay.m和.h是我定义整个游戏的地方。

所以当我运行它时,我得到启动屏幕,然后它转换为蓝色到黑色屏幕。这是因为MainMenu.m中没有任何内容吗?另外,(我认为)在MainMenu.m中我不需要任何东西。我只需要使MainMenu场景成为故事板的初始(主菜单)场景。我觉得我已经接近完成这项工作,并且您现在需要提供任何建议/知识,或者如果您需要更多信息来诊断问题,我们将再次对此表示赞赏。谢谢!

回答

0

当在cocos2d中没有场景运行时,您应该通过调用runScene而不是replaceScene来启动一个场景。

这是你应该尝试和改变的第一件事。

另一方面,在我看来你试图在UIKit视图控制器中显示一个cocos2d场景。这也需要一些谨慎的工作。如果您使用的是cocos2d 2.0,请参阅this post了解一些提示。

+0

我跟着那个教程来到我现在的位置。你也说这需要一些小心的工作,有没有更好的方法可以建议你这样做?谢谢 – sbru 2012-08-01 17:57:39

+0

,据我所知,你不应该像你定义的那样调用'makeTransition'。简单地实例化你的控制器(根据教程),然后继续执行它 - viewDidLoad(按照教程)应该做所有必需的。 – sergio 2012-08-01 18:03:44

+0

顺便说一句,尝试添加一些精灵到你的MainMenu场景,看看它是否显示。 – sergio 2012-08-01 18:05:45

相关问题