Windows上的cocos2d-x 3.x:如何更改游戏窗口的大小?

Windows上的cocos2d-x 3.x:如何更改游戏窗口的大小?,windows,visual-studio,cocos2d-x,cocos2d-x-3.0,Windows,Visual Studio,Cocos2d X,Cocos2d X 3.0,在为设备使用cocos2d-x 3.x进行开发时,它会自动设置GL视图以适合设备。在windows上的VS2012中,它创建了一个看似任意大小的窗口。如何设置该窗口的大小?我的解决方案如下 在AppDelegate.cpp中: bool AppDelegate::applicationDidFinishLaunching() { auto director = Director::getInstance(); auto glview = director->getOpenG

在为设备使用cocos2d-x 3.x进行开发时,它会自动设置GL视图以适合设备。在windows上的VS2012中,它创建了一个看似任意大小的窗口。如何设置该窗口的大小?

我的解决方案如下

在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致Tom。另外,我想和大家分享我的答案和经验

请记住,不要在主管设置总帐视图后设置屏幕大小。这会导致一些节点上的边界检测出现一些问题,最明显的是cocos2d::ui::Button和其他创建按钮的方法。我正在使用cocos2d-xv3.6

在这里检查我的答案:

这样做会导致一些问题:

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

director->getOpenGLView()->setFrameSize(width , height);
单击按钮,不会启动回调。这是令人沮丧的。可能也是出于沮丧,您在整个屏幕中单击,并注意到屏幕的某些部分(很可能是左下角)会触发回调,就像节点的边界框位于那里一样。它甚至与所讨论的节点的位置和大小不匹配每当我像上面描述的那样更改屏幕大小时,我都可以重现问题。所以永远不要这样做。

汤姆的答案是改变屏幕大小的正确方法

我希望这能阻止任何人这样做。我向上帝发誓,这篇文章本可以帮我省下很多时间来解决这个问题


干杯

使用
#if(CC_TARGET_PLATFORM==CC_PLATFORM_WIN32)|(CC_TARGET_PLATFORM==CC_PLATFORM_MAC)
包装对
setFrameSize()的调用意味着这只会影响桌面构建。。。