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);
Нажатие на кнопку не вызывает обратный вызов. Что разочаровывает. Вероятно, из-за вашего разочарования вы также щелкаете по всему экрану и замечаете, что есть некоторая часть экрана (скорее всего, нижняя левая часть), которая вызывает обратный вызов, как если бы там находился ограничивающий прямоугольник узла. Он даже не соответствует позиции и размеру рассматриваемого узла. Я могу воспроизвести проблему всякий раз, когда меняю размер экрана, подобный тому, который я описал выше. Так что никогда не делай так.
Ответ Тома - правильный способ изменения размера экрана.
Я надеюсь, что это удержит любого, кто сделает это таким образом. Клянусь Богом, этот пост мог бы сэкономить мне время на решение этой проблемы.
Ура!