Cocos 2d 2.0应该不能正常工作吗?

时间:2012-12-05 08:07:58

标签: iphone cocos2d-iphone cocos2d-x

我遇到了一些问题。我有一个cocos2d游戏,我刚刚完成开发。但是我遇到了一个问题,我需要在我的应用程序plist中启用纵向方向,以便游戏中心登录工作而不会抛出SIGABRT错误。所以,一旦我从我的应用程序的构建摘要页面启用它(或将其作为支持的方向添加到info.plist文件),它工作正常。但是随后在我的游戏中,如果你转动iPhone,它会翻转到肖像模式,如果它感觉你转向那样。我已经尝试从我的AppDelegate.m中弄乱了shouldAutorotateToInterfaceOrientation方法并且它没有被调用AT ALL,而不是在任何时候被调用。我在方法中抛出一个NSLog语句,以确定它是否被调用,而不是。

所以,基本上我真正的问题是。当游戏中心登录屏幕弹出时,我需要我的游戏以横向模式BESIDES保持。我如何在Cocos2d 2.0游戏中做到这一点?

我正在使用iOS6

3 个答案:

答案 0 :(得分:3)

首先,确保该应用支持目标摘要中的纵向和横向方向。

然后你需要制作一个新的根视图控制器,迫使你进入横向模式,这样你的游戏就不会开始奇怪地旋转:

@implementation CUSTOM_RootViewController
-(NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskLandscape;
}

- (BOOL)shouldAutorotate {
    return YES;
}

@end

最后,在AppDelegate.m文件中,将原始导航控制器替换为新的导航控制器:

// Create a Navigation Controller with the Director
//navController_ = [[UINavigationController alloc] initWithRootViewController:director_];
navController_ = [[SMD_RootViewController alloc] initWithRootViewController:director_];
navController_.navigationBarHidden = YES;

现在,您应该可以在顶部叠加纵向视图。

希望这有帮助!

答案 1 :(得分:1)

在AppDelegate.mm中使用此代码

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0

-(NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskLandscape;
}

- (NSUInteger)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window
{
    return UIInterfaceOrientationMaskLandscape;
}
#else
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
#endif

答案 2 :(得分:0)

在IOs6中,shouldAutorotateToInterfaceOrientation方法无法正常工作,所以你将appDelegate .m文件[window addSubview:viewcontroller]更改为[window setRootviewcontroller:viewcontroller]后工作正常。