FairyGUI.UIPackage.CollectComponentChildren C# (CSharp) Method

CollectComponentChildren() private method

收集创建目标对象所需的所有类型信息
private CollectComponentChildren ( PackageItem item, List list ) : void
item PackageItem
list List
return void
        void CollectComponentChildren(PackageItem item, List<DisplayListItem> list)
        {
            if (!item.decoded)
                LoadComponent(item);
            if (item.displayList == null)
            {
                LoadComponentChildren(item);
                TranslateComponent(item);
            }

                int cnt = item.displayList.Length;
            for (int i = 0; i < cnt; i++)
            {
                DisplayListItem di = item.displayList[i];
                if (di.packageItem != null && di.packageItem.type == PackageItemType.Component)
                    CollectComponentChildren(di.packageItem, list);
                else if (di.type == "list") //也要收集列表的item
                {
                    XMLList.Enumerator et = di.desc.GetEnumerator("item");
                    string defaultItem = null;
                    di.listItemCount = 0;
                    while (et.MoveNext())
                    {
                        XML ix = et.Current;
                        string url = ix.GetAttribute("url");
                        if (string.IsNullOrEmpty(url))
                        {
                            if (defaultItem == null)
                                defaultItem = di.desc.GetAttribute("defaultItem");
                            url = defaultItem;
                            if (string.IsNullOrEmpty(url))
                                continue;
                        }

                        PackageItem pi = UIPackage.GetItemByURL(url);
                        if (pi != null)
                        {
                            if (pi.type == PackageItemType.Component)
                                CollectComponentChildren(pi, list);

                            list.Add(new DisplayListItem(pi, null));
                            di.listItemCount++;
                        }
                    }
                }
                list.Add(di);
            }
        }