проблемы с ориентацией экрана cocos2d - PullRequest
1 голос
/ 16 ноября 2010

Я использую стандартный код поворота, присутствующий в cocos2d 0.99-rc0, для поддержки портретного + двух ландшафтных режимов.Я показываю меню в портретном режиме, а затем экран поворачивается в альбомную для реальной игры.Проблема в том, что когда я возвращаюсь к портрету, вся сцена главного меню выключается на половину экрана, как будто кто-то сдвинул опорную точку или что-то в этом роде.

Есть идеи, пожалуйста?

1 Ответ

1 голос
/ 17 ноября 2010

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

Я делаю следующее, чтобы изменитьориентация экрана:

Во-первых, первая строка идет внутри метода инициализации. Я установил таймер на запуск через 0,5 секунды.Использование таймера в моей игре означает, что переход сцены (исчезновение) работает плавно, тогда экран не вращается и не вращается, но вам, вероятно, не понадобится это.

[self schedule:@selector(rotate:) interval:0.5];

-(void)rotate:(ccTime) dt{
    [[CCDirector sharedDirector] setDeviceOrientation:CCDeviceOrientationLandscapeLeft];
    [self unschedule:@selector(rotate:)];
}

ключевая строка ниже, вам не обязательно нужен таймер:

[[CCDirector sharedDirector] setDeviceOrientation:CCDeviceOrientationLandscapeLeft];

Конечно, вы можете изменить этот бит для разных ориентаций:

CCDeviceOrientationLandscapeLeft
CCDeviceOrientationLandscapeRight
CCDeviceOrientationPortrait
CCDeviceOrientationPortraitUpsideDown

Удачи.

...