这块代码主要是文件CCSGUIReader
CCSGUIReader 的作用是解析json组合成用户需要的UIWiget对象.
实例:
Widget* m_uiRoot = cocostudio::GUIReader::shareReader()->widgetFromJsonFile("fruit_ui_1.json");
-》
往下面走
return widgetFromJsonDocument(jsonDict, fileName, NULL);
jsonDict:读到的json文件内容,fileName json文件名
-》
再往下走
widget = pReader->createWidget(jsonDict, m_strFilePath.c_str(), fileName);
通过jsonDict里面的配置和属性 构造widget
-》
Widget* widget = widgetFromJsonDictionary(widgetTree);
-》
int childrenCount = DICTOOL->getArrayCount_json(data, "children");
for (int i = 0; i < childrenCount; i++)
{
const rapidjson::Value& subData = DICTOOL->getDictionaryFromArray_json(data, "children", i);
cocos2d::ui::Widget* child = widgetFromJsonDictionary(subData);
此处会层层展开精灵的子精灵 比如一个panel下面多个button 会依次回调 widgetFromJsonDictionary初始化button属性,当此panel下的精灵全部通过
widget->addChild(child);
添加到widget后 继续添加设置下一个同层次的精灵。
[cocos2d-x] 资源json的载入过程,布布扣,bubuko.com