static public void initDatas() { if (isInitData) { return; } // isInitData = true; dicControls.Clear(); string json; ArrayList list; int index; int lens; EBAniLayers layer; EBAniParameters parameter; EBAniControls controls; // 动画层级数据 Dictionary <int, EBAniLayers> dicLayers = new Dictionary <int, EBAniLayers> (); json = File.ReadAllText(JSON_PATH_Layer); list = JSON.DecodeList(json); lens = list.Count; for (index = 0; index < lens; index++) { layer = EBAniLayers.parseByMap((Hashtable)list [index]); if (layer.unqid > 0) { dicLayers.Add(layer.unqid, layer); } } // 动画参数数据 Dictionary <int, EBAniParameters> dicParameters = new Dictionary <int, EBAniParameters> (); json = File.ReadAllText(JSON_PATH_Parameters); list = JSON.DecodeList(json); lens = list.Count; for (index = 0; index < lens; index++) { parameter = EBAniParameters.parseByMap((Hashtable)list [index]); if (parameter.unqid > 0) { dicParameters.Add(parameter.unqid, parameter); } } // 动画状态机数据· json = File.ReadAllText(JSON_PATH_States); //list = JSON.DecodeList (json); Hashtable actMap = JSON.DecodeMap(json); ArrayList actMapKey = new ArrayList(actMap.Keys); lens = actMapKey.Count; Dictionary <int, List <EBAniState> > dicActState = new Dictionary <int, List <EBAniState> > (); for (index = 0; index < lens; index++) { ArrayList aniStateList = (ArrayList)actMap[actMapKey[index]]; int dicKey = int.Parse(actMapKey[index].ToString()); dicActState [dicKey] = new List <EBAniState> (); for (int i = 0, len = aniStateList.Count; i < len; i++) { EBAniState state = EBAniState.parseByMap((Hashtable)aniStateList [i]); state.DescParams(dicParameters); dicActState [dicKey].Add(state); } //EBAniSate state = EBAniSate.parseByMap ((Hashtable)list [index]); // if (state.unqid > 0) { // // state.DescParams (dicParameters); // // controls = dicControls [state.ctrlUnqid]; // if (controls != null) { // controls.listState.Add (state); // } // } } // ========= 动画控制器数据 很重要的========= json = File.ReadAllText(JSON_PATH_Controls); list = JSON.DecodeList(json); lens = list.Count; for (index = 0; index < lens; index++) { controls = EBAniControls.parseByMap((Hashtable)list [index]); if (controls.unqid > 0) { foreach (int lunqid in controls.layerUnqids) { layer = dicLayers [lunqid]; if (layer != null) { controls.listLayers.Add(layer); } } foreach (int lunqid in controls.parsUnqids) { parameter = dicParameters [lunqid]; if (parameter != null) { controls.listParameters.Add(parameter); } } dicControls.Add(controls.unqid, controls); controls.listState = dicActState[controls.activeId]; } } }