这些天都在想办法解析MT的uii文件,通过rapidXML做xml分析,这里也有个小插曲,因为要通过属性名称递归找到一个子元素,结果始终没有搞定这个递归函数,后面才发现错误,下面贴上代码以示纪念:
void Global::FindNodeByAttribute(const char* strNodeAttr, xml_node<>* pNode, xml_node<>*& rResult)
{
if(pNode)
{
xml_node<>* pErgNode= NULL;
char* pNameAttr= NULL;
xml_attribute<char>* pAttr= NULL;
for( pErgNode= pNode; pErgNode; pErgNode= pErgNode->next_sibling())
{
pAttr= pErgNode->first_attribute("Name");
if(pAttr)
{
pNameAttr= pAttr->value();
if(strcmp(pNameAttr, strNodeAttr) == 0)
rResult= pErgNode;
else
FindNodeByAttribute(strNodeAttr, pErgNode->first_node(), rResult);
}
}
}
}
后面用一个汇编的工具,发现MT里面自己连cocos2d-x的CCNode类都重新写了个CLuaUI_Node,所以就放弃了这个想法。再考虑到要重新做新的东西,肯定不会用到原来的文件和解析方式,原因很简单:因为MT的编辑器我们拿不到。
然后下午小组成员讨论该怎么进行下一步,得出来的结果是先用cocosBuilder这个UI编辑器做界面,自己把MT原有的资源重新导入到cocosBuilder再生成我们想要的目标文件。
这样也好,因为我要反解析MT的UI目标有点远。