精通Cocos2d-x游戏开发(进阶卷)
上QQ阅读APP看书,第一时间看更新

5.3 CocoStudio分辨率适配

可以使用CocoStudio来编辑界面,在CocoStudio中可以设置控件的相对位置和相对尺寸,并在不同的分辨率下进行预览。

目前制作UI主要使用的是CocoStudio 1.6和CocoStudio 2.0以上的版本,对于CocoStudio 2.0以上的版本,在加载了UI文件之后,会返回一个根节点,将根节点添加到场景中,然后在不同的分辨率下运行可以发现UI文件中设置的相对坐标并没有生效。这是因为在编辑UI时,所有的相对位置和相对尺寸都是相对于其父节点的,从UI文件中创建出来时,并没有更新根节点的尺寸,所以创建出来的所有内容都是根据制作UI时的分辨率决定的。

如果需要使其分辨率适配生效,需要设置UI根节点的尺寸为当前场景的尺寸,并执行UIHelper的doLayout()方法,刷新整个UI的布局。

        Size frameSize = Director::getInstance()->getVisibleSize();
        node->setContentSize(frameSize);
        ui::Helper::doLayout(node);

在3.10版本的引擎中,CSLoader还提供了createNodeWithVisibleSize()方法用于加载CocoStudio 2.0以上版本输出的节点文件,并自动刷新UI。