Ориентация устройства cocos2d-x Android: что я делаю неправильно?

Я попытался изменить ориентацию устройства в Android-проекте HelloWorld. Но, у меня есть небольшая проблема. Я следовал руководству с офф.сайта:

1. Add nativeInit(w, h); to cocos2dx/platform/android/java/src_common/org/cocos2dx/lib/Cocos2dxRenderer.java -> void onSurfaceChanged(GL10 gl, int w, int h).
2. Add this code to void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv* env, jobject thiz, jint w, jint h):


cocos2d::CCEGLView* view = cocos2d::CCDirector::sharedDirector()->getOpenGLView();
 if (!view) {
    ...
 } else {
    ...
    if (view->getFrameSize().width != w || view->getFrameSize().height != h) {
      view->setFrameSize(w, h);
      view->setDesignResolutionSize(w, h, kResolutionShowAll);
 }
}

Итак, моя проблема: в портретной ориентации у меня хороший вид: хороший вид, но в альбомной ориентации у меня вот что: плохой вид . Что я делаю неправильно?


person strelok2010    schedule 03.10.2012    source источник


Ответы (1)


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

if (orientationIsLandScape()) {
     background->setPosition();
} else {
     background->setPosition();
}

orientationIsLandScape()должна быть какая-то написанная вами функция для определения текущей ориентации

person m.ding    schedule 03.10.2012