我已经在 cocos2d 2.0 中创建了一个项目,并希望使用 Storyboard合并一个主菜单。
我已经在 tinytimgames.com 上试过 Jerrod Putnam 的教程(我无法提供链接,因为新用户每篇文章只允许有 2 个链接,但如果你用谷歌搜索“cocos2d storyboard”,它就是第一个链接) 但它对我不起作用。我完全按照它(我认为)。我打开我的 cocos2d 项目并从他的 github 中导入文件,CCViewController.m 和 .h,然后创建一个新的 Storyboard文件并按照教程进行操作。但是,当我运行它时,它只是直接在我的 cocos2d 游戏上启动,而不是在我刚创建的新菜单上启动。
我也试过这个教程: http://zackworkshopios.blogspot.com/2012/06/cocos2d-with-storyboard-example.html 但它再次对我不起作用,因为我没有(或不知道在哪里可以找到/获取)libcocos2d.a 和 libCocosDenshion.a 文件。
这是我从 fidgetware 尝试的另一个教程:http://fidgetware.com/Tutorials/page15/page15.html 我完成了本教程,但我的项目没有名为 RootViewController(.m 或 .h)的文件,因此我不确定应该将应该放入这些文件的代码放在哪里。
还有 Ray Wenderlich 的教程,但他没有使用 Storyboard。
如果有人能给我一个解决方案,说明为什么这些都不适合我,或者给我一步一步详细介绍如何将 Storyboard合并到我的 cocos2d 2.0 项目中,我将不胜感激。我的另一个问题是我应该从一个 cocos2d 2.0 项目开始并合并 Storyboard,还是应该从一个单 View 应用程序项目(或其他项目?)开始并合并我的 cocos2d 2.0 部分。提前致谢!
最佳答案
好吧,在 Jerrod Putnam 的大力帮助下,我终于弄明白了,谢谢 Jerrod!首先转到他的教程:
http://www.tinytimgames.com/2012/02/07/cocos2d-and-storyboards/
并从 github 链接下载并导入文件。然后创建CCViewController 的子类并命名为cocos2dViewController。在 cocos2dViewController.h 中复制并粘贴:
#import "CCViewController.h"
@interface cocos2dViewController : CCViewController
@end
并在 cocos2dViewController.m 中复制并粘贴此内容(来自 Putnam 的教程)
#import "GamePlay.h"
#import "cocos2dViewController.h"
@interface cocos2dViewController ()
@end
@implementation cocos2dViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
CCDirector *director = [CCDirector sharedDirector];
if([director isViewLoaded] == NO)
{
// Create the OpenGL view that Cocos2D will render to.
CCGLView *glView = [CCGLView viewWithFrame:[[[UIApplication sharedApplication] keyWindow] bounds]
pixelFormat:kEAGLColorFormatRGB565
depthFormat:0
preserveBackbuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0];
// Assign the view to the director.
director.view = glView;
// Initialize other director settings.
[director setAnimationInterval:1.0f/60.0f];
[director enableRetinaDisplay:YES];
}
// Set the view controller as the director's delegate, so we can respond to certain events.
director.delegate = self;
// Add the director as a child view controller of this view controller.
[self addChildViewController:director];
// Add the director's OpenGL view as a subview so we can see it.
[self.view addSubview:director.view];
[self.view sendSubviewToBack:director.view];
// Finish up our view controller containment responsibilities.
[director didMoveToParentViewController:self];
// Run whatever scene we'd like to run here.
if(director.runningScene)
[director replaceScene:[GamePlay scene]];
else
[director pushScene:[GamePlay scene]];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
您会注意到我导入了 GamePlay.h,那是因为 GamePlay.m 是我拥有游戏所有内容的地方。因此,为您的游戏导入头文件。你也会看到我打电话
if(director.runningScene)
[director replaceScene:[GamePlay scene]];
else
[director pushScene:[GamePlay scene]];
确保将“GamePlay”替换为包含您的游戏的场景名称。完成后,转到您的 AppDelegate.m 并替换您的
application didFinishLaunchingWithOptions
用这个函数:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
return YES;
}
你快到了!现在,对于您的 Storyboard文件,请按照提供的链接中的 Putnam 教程进行操作。在他说“并将它的类分配给我们刚刚创建的那个”的地方,将它分配给 cocos2dViewController。就是这样!运行该项目,它应该可以工作,如果没有,请随时提出您的任何问题。
关于objective-c - 如何将 Storyboard合并到 cocos2d 2.0 项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11550437/