我试图在cocos2d-3.x
中禁用屏幕旋转,但我无法弄清楚如何。我在CCAppDelegate
中有以下代码:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
setupCocos2dWithOptions:
[self setupCocos2dWithOptions:@{
CCSetupShowDebugStats: @(YES),
// Run in portrait mode.
CCSetupScreenOrientation: CCScreenOrientationPortrait,
}];
return YES;
}
屏幕处于纵向模式,但它也会旋转为纵向UpsideDown。我读到Cocos2d使用的是UIViewController,所以我应该使用苹果方法吗?
答案 0 :(得分:2)
Cocos2D目前只允许选择" Landscape"或"肖像"但不允许指定更具体的方向。这可能会在Cocos2D中修复,但是现在您可以修改Cocos2D源代码作为解决方法。我为此问题打开了GitHub Issue。
在supportedInterfaceOrientations
中实施CCAppDelegate
并不能解决问题,因为该方法是由CCNavigationController
实施的,并且会覆盖您的设置。
Open" CCAppDelegate.m"并转到第77行。您应该看到这种方法:
-(NSUInteger)supportedInterfaceOrientations
{
if ([_screenOrientation isEqual:CCScreenOrientationAll])
{
return UIInterfaceOrientationMaskAll;
}
else if ([_screenOrientation isEqual:CCScreenOrientationPortrait])
{
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}
else
{
return UIInterfaceOrientationMaskLandscape;
}
}
您可以将整个方法更改为仅支持一个方向,例如:
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationPortrait;
}
当您更改该方法时,您可以返回要锁定游戏的4个方向中的一个:
UIInterfaceOrientationMaskLandscapeLeft
UIInterfaceOrientationMaskLandscapeRight
UIInterfaceOrientationMaskPortrait
UIInterfaceOrientationMaskPortraitUpsideDown
现在是解决方法。