2010-11-16 2 views
1

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

Любые идеи, пожалуйста?

ответ

1

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

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

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

[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 

удачи.

+0

Звучит как настоящий хак, но эй - если нет лучших решений, то это лучшее решение! Спасибо, что поделились, я снова посмотрю на это, как только закончу некоторые другие вещи. –

Смежные вопросы