Cocos2d-x 3,9 неправильного происхождения и видимого размера, когда в ландшафте?

Я разместил свой профиль в альбомной ориентации:

<activity
    android:name="org.cocos2dx.cpp.AppActivity"
    android:screenOrientation="landscape"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Затем я запускаю игру и печатаю оригинал и видимый размер.

log("DEBUG: origin = %f, %f", origin.x, origin.y);
log("DEBUG: visibleSize = %f, %f", visibleSize.width, visibleSize.height);

Вывод был: (Кстати, проектное разрешение было 1024 х 768)

D/cocos2d-x debug info: DEBUG: origin = 0.000000, 75.772583
D/cocos2d-x debug info: DEBUG: visibleSize = 1024.000000, 616.454834

Обратите внимание, что системная панель "back-home-apps" находится на правой стороне экрана. Я также попытался поместить изображение в середину экрана, установив его положение (origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2), но, как вы можете видеть, из-за неправильного видимого размера и происхождения, изображение направлено к нижней части экрана.

введите описание изображения здесь

Я ожидал, что происхождение должно быть (0,0), а видимый размер должен быть (1024 - height-of-system-bar) х 768. Но, как вы можете видеть, происхождение имеет дельту на Y ось, и видимый размер принять удар также на Y ось --- как будто Cocos2d-x подумал, что экран был в портретной ориентации, а системная панель находится внизу экрана.

Как мне сказать cocos2d, что телефон находится в альбомной ориентации?

1 ответ

Решил загадку. Две вещи здесь:

  1. Я неправильно вычислял координаты. Что я на самом деле сделал ((origin.x + visibleSize.width / 2), (origin.y + visibleSize.height / 2)), Я сделал ошибку, введя этот вопрос, а не скопировав / вставив код, что привело к путанице.

  2. После этого исправления исходный и видимый размеры по-прежнему не соответствуют размеру экрана, и это вызвано тем, что я использовал политику NO_BORDER (о которой я не упомянул в вопросе). Cocos2d увеличил содержимое, чтобы заполнить все пространство экрана, в результате чего ось, которая длиннее, чем необходимо, была зажата посередине.

Другие вопросы по тегам