cocos2d-x 3.x в Windows: как изменить размер игрового окна?

При разработке с использованием cocos2d-x 3.x для устройства, он автоматически устанавливает вид GL, чтобы соответствовать устройству. В VS2012 на окнах он создает окно произвольного размера. Как мне установить размер этого окна?

2 ответа

Решение

Мое решение было следующим.

В AppDelegate.cpp:

bool AppDelegate::applicationDidFinishLaunching() {
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) { 
        glview = GLView::create("My Game");
        glview->setFrameSize(800, 600);     // or whatever
        director->setOpenGLView(glview);
    }
    ...
}

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

+1 к Тому. Кроме того, я просто хотел бы поделиться своим ответом и опытом со всеми.

Помните, не устанавливайте размер экрана "ПОСЛЕ", чтобы директор установил вид GL. Это вызывает некоторые проблемы с определением границ в некоторых узлах, в частности, с cocos2d::ui::Button и другими способами создания кнопок. Я использую cocos2d-x v3.6

Посмотрите мой ответ здесь: cocos2d:: При обнаружении нестандартного размера окна обнаружение щелчка по меню происходит немного ниже слева.

Это может вызвать проблемы:

auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
    glview = GLViewImpl::create("My Game");
    director->setOpenGLView(glview);
}

director->getOpenGLView()->setFrameSize(width , height);

Нажатие на кнопку не вызывает обратный вызов. Что разочаровывает. Вероятно, из-за вашего разочарования вы также щелкаете по всему экрану и замечаете, что есть некоторая часть экрана (скорее всего, нижняя левая часть), которая вызывает обратный вызов, как если бы там находился ограничивающий прямоугольник узла. Он даже не соответствует позиции и размеру рассматриваемого узла. Я могу воспроизвести проблему всякий раз, когда меняю размер экрана, подобный тому, который я описал выше. Так что никогда не делай так.

Ответ Тома - правильный способ изменения размера экрана.

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

Ура!

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