将App锁定到Cocos2D v3中的一个特定方向

时间:2014-09-10 17:56:03

标签: ios cocos2d-iphone

我试图在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,所以我应该使用苹果方法吗?

1 个答案:

答案 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

现在是解决方法。