ui编辑器中的层和代码中的层对应问题

初学cocostudio,一个很令我困惑的问题是:在UI编辑器中,一个工程可以有多个层。但一个工程的导出文件只有一个xxx.json。
在代码中createWidgetFromJsonFile(“xxx.json”)的返回是加在UILayer里的。这样的话,无论UI编辑器中编辑了多少layer,对于代码都是没有意义的,因为代码里只有一个UILayer对象,所有的控件都被加在了这一个UILayer上。
如果是这样,那么UI编辑器的一个工程就只能有一个层,才能和代码的UILayer建立对应关系。

Did I miss something?

小雨 威武~~

非常感谢。网上相关的资料很少,而且貌似官方网站上也没有CocoGUILIB这部分的api reference。
能不能分享一些这方面的资料?

— Begin quote from ____

%url%Sugar 发表于 2013-8-29 14:14
非常感谢。网上相关的资料很少,而且貌似官方网站上也没有CocoGUILIB这部分的api reference。
能不能分享一 …

— End quote

我的资料也就论坛里这些,主要还是看着它源码在搞的。

— Begin quote from ____

%url%Sugar 发表于 2013-8-29 10:14
我的意思是在代码中:
UILayer* layer = UILayer::create();
this->addChild(layer);

— End quote

UI编辑器里你生成每个场景时都会给你个Panel,这个panel就是你在程序里得到的那个UIWidget。

而这个UIWidget里面的结构跟在UI编辑器里搞的是一样的。
你去看下代码,它里面是按照json描述的结构递归生成各UIWidget的。

如果UI编辑器里有3个layer,那么在代码中如何把根据json生成的UIWidget转化成3个UILayer呢?

— Begin quote from ____

%url%Sugar 发表于 2013-8-29 12:44
如果UI编辑器里有3个layer,那么在代码中如何把根据json生成的UIWidget转化成3个UILayer呢? …

— End quote

首先,UI编辑器里的层是UIpanel,不是UILayer。

在编辑器里给每个panel取好名字,然后
m_mainWidget = CCUIHELPER->getwidgetformjson什么什么
UIPanel* up = (UIPanel*)m_mainWidget->getChildByName(“panel0”);
getChildByName就可以取到名字为panel0的层了。

我的意思是在代码中:
UILayer* layer = UILayer::create();
this->addChild(layer);
layer->addWidget(CCUIHELPER->createWidgetFromJsonFile(“xxx.ExportJson”));
但xxx.ExportJson对应的UI编辑器工程里有多个层容器。按理说解析xxx.ExportJson的API应该分别按照UI编辑器里的层容器关系分别生成每一个代码中的UILayer才对。像上面那样生成,所有在UI编辑器中的层中的控件都加在了一个layer上,本来在UI编辑器中体现的层容器嵌套关系消失了

应该是一个场景有多层,在一个UI编辑器里 可以多个有画布。一个UI工程师可以导出多个画布,如果不修改默认导出路径就会覆盖之前的。