2013-12-16 2 views
0

Каков наилучший способ получить ориентацию устройства с помощью cocos2d-x (C++)?Как получить ориентацию устройства

Приложение для Android/iOS поддерживает все 4 ориентации устройств и более важно, чем знать, пейзаж или портрет, я хотел бы знать, если он перевернут или нет.

Мне нужно знать из CCLayer.

UPDATE

Я пытаюсь получить события для правого и левого наклона наклона. Для этого я вычисляю угол, на котором удерживается устройство. Тем не менее, мне нужно знать, какую ориентацию имеет устройство, чтобы знать, действительно ли я наклоняюсь влево или вправо.

+0

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

+0

@tyczj Не для акселерометра – Daniel

+0

, возможно, вы захотите добавить это к своему вопросу, а затем объяснить, что ваша проблема в том, что вы пытаетесь преодолеть. – tyczj

ответ

2

Хотя cocos2d-x является кросс-платформой, некоторые вещи по-прежнему очень зависимы от платформы, например, если вы видите CCFileUtils, у нас есть отдельные файлы реализации для iOS, Android и т. Д., Кросс-платформа поддерживается с одним заголовком ,

Имея это в виду,

в Android вы можете получить ориентацию устройства, используя константы,

Surface.ROTATION_0 (no rotation) 
Surface.ROTATION_90 
Surface.ROTATION_180 
Surface.ROTATION_270. 

который вы можете получить, позвонив Display.getRotation() (Он вращается только во всех этих направлениях, если android:screenOrientation:fullSensor устанавливаются)

И в прошивке, Вы можете получить значение с

UIDeviceOrientationPortrait 
UIDeviceOrientationPortraitUpsideDown 
UIDeviceOrientationLandscapeLeft 
UIDeviceOrientationLandscapeRight 

(Он вращается только во всех этих направлениях, если, supportedInterfaceOrientations метод возвращает UIInterfaceOrientationMaskAll)

Примечание: не очень хорошая практика, чтобы повернуть телефон вверх ногами в портретном режиме, только на таблетках его принятых .. (Apple может даже отказаться от вашего приложения по этой причине)

Сообщите мне, если вы хотите знать, как его использовать, но поиск по ключевым словам даст вам возможность использовать.

+0

Спасибо, однако «Не очень хорошая практика повернуть телефон вверх ногами в портретном режиме» не соответствует действительности и полностью основана на мнениях. Обычно, когда пользователь использует приложение при подключении устройства к источнику питания, он захочет использовать приложение с ног на голову из-за кабеля. – Daniel

+0

Я надеялся, что для этого будет функция ... – Daniel

1

После быстрого поиска Google:

http://www.cocos2d-x.org/wiki/Device_Orientation

http://www.cocos2d-x.org/forums/6/topics/36414

UDPDATE:

Я не думаю, что вы можете определить ориентацию так, как вы хотите от cocos2d- Икс. Тогда единственное решение, о котором я думаю, это перейти в java через jni и использовать методы android для определения текущей ориентации. Вот link о том, как определить все 4 ориентации.

Как вызывать java-методы из C++, это еще одна игра с мячом.

+0

Первая ссылка предназначена для установки ориентации устройства, вторая - только для того, чтобы решить, что она в пейзаже или в портрете (довольно уродливо) (именно по этой причине я написал «более важно, чем знать, пейзаж или портрет, Я хотел бы знать, если он перевернут или нет ») – Daniel

+0

Если мой ответ указал вам в правильном направлении, пожалуйста, подумайте о принятии его в качестве действительного ответа. спасибо. –

+0

Извините, но ответ не имеет смысла. Я разрабатываю кросс-пластину. – Daniel

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