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