1.瞎几把弄一个skin文件+ 瞎几把写一个class 我是界面王二狗 extends UiPanelBase
2.注册skin和class,将他们进行交配(register),并且给他们的家庭一个门牌号(panelID);
3.他们家上台表演了:showPanel->set currentPanel->得到这个panel的data,如果这个panel是属于一个group的字界面,将paneldata的groupid设置为groupdata的id,还要给获取到这个group的groupdata,将groupdata的openid设置为panel的id,将两者绑定起来。
4.如果是panel或者已经打开了group的界面,则创建这个界面的class 的对象,这个是必须要创建的。如果是group子界面,并且这个group不存在,则需要创建这个group的class的对象,然后把group对象的openid设置为这个子界面的id。
5.创建了界面的class的对象,然后就开始去加载这个对象,即调用这个对象的load函数,这个load函数其实就是父类Panel(faceui->UiPanelBase->Panel->
ShowObject->ShowLogic)的load函数,最终是调用到ShowLogic的load方法。
6.如果有指定资源组,则加载资源组,否则直接加载资源。
7.资源组的加载:先根据名字创建一个资源组的对象,然后调用RES.loadGroup(groupName....)去加载资源组。加载完了再去加载skin,调用的接口是EXML.load。
8.初始化皮肤initSkin:根据皮肤路径创建一个partMap组件,用来记录皮肤的信息。同时将解析出来的皮肤的clazz赋值给界面的class对象的skinName,记录下来,这里的skinName是引擎的变量,它不仅仅是记录下来,而且还会解析这个皮肤的名字,然后创建对应clazz类名字的对象以及递归其子对象,这个对象就包含了皮肤的所有信息,然后设置皮肤的每个part(set SkinName->$parseSkinName->new SkinName()->
for setSkinPart-> this.partAdded->回到showObject里面的partAdded->ShowLogic.partAdded->PartInfoMap.addPart),然后会将皮肤的信息存在partMap里面。然后调用界面的onInit函数,