如何仅使用Cocos2d旋转横向

时间:2012-10-16 21:36:58

标签: ios cocos2d-iphone

这是我应用程序的最后一步,其他一切都已完成。

我正在使用cocos2d,无论我做什么,我都无法让应用程序旋转。它只能按我的应用程序设置方式旋转风景。

这是我的GameConfig.h

#ifndef __GAME_CONFIG_H
#define __GAME_CONFIG_H

//
// Supported Autorotations:
//      None,
//      UIViewController,
//      CCDirector
//
#define kGameAutorotationNone 0
#define kGameAutorotationCCDirector 1
#define kGameAutorotationUIViewController 2

//
// Define here the type of autorotation that you want for your game
//
#define GAME_AUTOROTATION kGameAutorotationUIViewController

#endif // __GAME_CONFIG_H

我的AppDelegate的applicationDidFinishLaunching方法,

#if GAME_AUTOROTATION == kGameAutorotationUIViewController
    //[director setDeviceOrientation:kCCDeviceOrientationPortrait];
    [director setDeviceOrientation:kCCDeviceOrientationLandscapeLeft];
#else
   // [director setDeviceOrientation:kCCDeviceOrientationPortrait];
    [director setDeviceOrientation:kCCDeviceOrientationLandscapeLeft];
#endif

和RootController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return ( UIInterfaceOrientationIsLandscape( interfaceOrientation ) );
    }

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    //
    // Assuming that the main window has the size of the screen
    // BUG: This won't work if the EAGLView is not fullscreen
    ///
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGRect rect = CGRectZero;


    if(toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)      
        rect = screenRect;

    else if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
        rect.size = CGSizeMake( screenRect.size.height, screenRect.size.width );

    CCDirector *director = [CCDirector sharedDirector];
    EAGLView *glView = [director openGLView];
    float contentScaleFactor = [director contentScaleFactor];

    if( contentScaleFactor != 1 ) {
        rect.size.width *= contentScaleFactor;
        rect.size.height *= contentScaleFactor;
    }
    glView.frame = rect;
}

在Info.plist中,我在支持的列表中都有横向方向。

我做错了什么?

由于

1 个答案:

答案 0 :(得分:1)

尝试添加此行

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

到您的applicationDidFinishLaunching:方法