Портретный режим Cocos2d не работает на iPhone

#iphone #xcode #ios #cocos2d-iphone

#iPhone #xcode #iOS #cocos2d-iphone

Вопрос:

Я создаю игру cocos2d, которая должна быть в портретном режиме. Я изменил RootViewController.m на портретный режим, и все работает нормально, как на симуляторе, так и на моем iPad. Однако, когда я запускаю игру на своем iPhone, по умолчанию она возвращается в альбомный режим.

Есть идеи, как это исправить?

Спасибо.

Ответ №1:

У меня есть лучшее решение, которое будет работать на 100%:

Замените весь материал, который был в методе RootViewController.m / shouldAutorotateToInterfaceOrientation следующим:

возврат ( UIInterfaceOrientationIsPortrait (ориентация интерфейса));

И если я когда-нибудь захочу изменить ориентацию во время выполнения / переключения сцены:

[[CCDirector sharedDirector] Настройка ориентации устройства:CCDeviceOrientationLandscapeLeft];

Обратите внимание, что автоматический поворот теперь больше не поддерживается

Комментарии:

1. привет, Александр, я пробовал это, но перевернутый режим также включен. итак, как я могу включить ТОЛЬКО портретный режим?

2. используете ли вы Cocos2D 1.x или 2.0 beta?

Ответ №2:

в GameConfig.h:

используйте director для автоматического поворота

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

вместо

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

и в AppDelegate.m

 - (void) applicationDidFinishLaunching:(UIApplication*)application
{
...
[director setDeviceOrientation:kCCDeviceOrientationPortrait];
  

Ответ №3:

Внутри RootViewController возвращает false из приведенного ниже метода:

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return false; 

   // other code...

}
  

Ответ №4:

В RootViewController.m

 return ( UIInterfaceOrientationIsLandscape( interfaceOrientation ) );
  

измените эту строку на

 return ( UIInterfaceOrientationIsPortrait( interfaceOrientation ) );
  

Комментарии:

1. Да, это именно то, что я уже сделал. Он отлично работает в симуляторе и на моем iPad, но по какой-то причине не работает на моем iPhone.

2. но теперь работает только для портретного режима, мне нужны обе ориентации

Ответ №5:

в GameConfig.h:

 For 1st and 2nd generation devices, value is set to kGameAutorotationNone, change it to kGameAutorotationUIViewController.

// ARMv6 (1st and 2nd generation devices): Don't rotate. It is very expensive
#elif __arm__
#define GAME_AUTOROTATION kGameAutorotationNone