Переключение ориентации игры Cocos2d влево-> вправо-> влево сразу после запуска - PullRequest
2 голосов
/ 14 января 2012

Я использую стандартный шаблон cocos2d с небольшим изменением базового кода.
В мою игру играют только слева или справа - без портрета.

Когда игра запускается, она запускается вправо,затем переворачивается вверх дном, затем снова переворачивается вправо.
Я просмотрел несколько сообщений по этой проблеме и, похоже, не могу понять, что заставляет интерфейс переворачиваться взад и вперед без перемещения устройства.
Благодарю за любую помощь!

У меня есть следующий связанный код:

RootViewController.m:

#if GAME_AUTOROTATION == kGameAutorotationUIViewController

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    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;
}
#endif

AppDelegate:

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

GameConfig.h:

#define kGameAutorotationNone 0
#define kGameAutorotationCCDirector 1
#define kGameAutorotationUIViewController 2

#if defined(__ARM_NEON__) || TARGET_IPHONE_SIMULATOR
#define GAME_AUTOROTATION kGameAutorotationUIViewController

#elif __arm__
#define GAME_AUTOROTATION kGameAutorotationNone

1 Ответ

3 голосов
/ 04 февраля 2012

У меня была та же проблема сегодня, она оказалась в порядке поддерживаемых ориентаций в моем списке приложений. Приложение будет запускаться в альбомной ориентации слева, переворачиваться вправо, а затем очень быстро переворачиваться влево.

Я вошел в свойства своего проекта на вкладке «Сводка» (где вы настраиваете поддерживаемые ориентации, значки приложений, изображения запуска и т. Д.) И отменил выбор всех поддерживаемых ориентаций.

Затем я снова отметил их по порядку (Пейзаж вправо, Пейзаж влево) - и на вкладке «Информация» убедился, что они находятся в указанном порядке в массиве в разделе «Поддерживаемые ориентации интерфейса».

Элемент 0 - Пейзаж (правая домашняя кнопка) Элемент 1 - Пейзаж (левая домашняя кнопка)

С тех пор проблем не было, надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...