var xmlUtil = cc.Class({
// extends: cc.Component,
properties: {
xmlName:null,
data:null
},
statics: {
instance: null
},
ctor: function () {
this.xmlName = [// 新表加入时需加入对应表名
"ExampleData",
"battle1",
"battle2",
"battle3",
"battle4",
"battle5",
"battle6",
"battle7",
"battle8",
];
var index = 0;
var aLen = this.xmlName.length;
var xName = this.xmlName;
var alldata = [];
var addData = function(){
if(index<aLen){
var url = cc.url.raw('resources/'+xName[index]+'.json');
cc.loader.load( url, function(err, res){
if(err){
cc.log("Error"+err);
}else{
alldata[xName[index]] = res;
}
index++;
addData();
});
};
};
addData();
this.data = alldata;
},
getXmlInfo: function (name, id){
cc.log("----------get data!-----------");
cc.log(name+"------------")
var newdata = this.data[name];
if (newdata == null){
cc.log("there is no xml named "+name);
return null;
}
if (newdata[id] == null){
cc.log("there is no xmlinfo by id "+id+"in "+name)
return null;
}
return newdata[id];
},
getLen: function(name){
var Length = 0;
for(var item in this.data[name]){
Length++;
}
return Length;
},
getAllXmlInfo: function(name){
var newdata = this.data[name];
if (newdata == null){
cc.log("there is no statictable named "+name)
return null
}
return newdata
}
});
xmlUtil.getInstance = function () {
if (xmlUtil.instance == null) {
xmlUtil.instance = new xmlUtil();
}
return xmlUtil.instance;
};
//调用方法:
//生成的json文件必须放于resources目录下
// 1引入: var xmlUtil = require("…/xml/xmlUtil");
// 2初始化:var xml = xmlUtil.getInstance(); //注意:由于cc.loader.load的异步特性 在加载所有表时会产生延时 所以初始化工作需提前进行
// 3调用:
// var aa = xml.getXmlInfo(“battle1”,1); // 获取表名为"battle1"中id为1的一条数据
// cc.log(“AllXmlInfo:”+AllXmlInfo);
// cc.log(aa.id+"--------------------");
// cc.log(aa.rewardType+"--------------------");
// cc.log(aa.level+"--------------------");
// cc.log(aa.feats+"--------------------");
// var len = xml.getLen("battle2") //获取表名为"battle2"的长度
// cc.log("len:"+len);
// var AllXmlInfo = xml.getAllXmlInfo("battle3");//获取表名为"battle3"的全部数据
我在项目中有这样一个工具类来对表格数据进行读取加载,但是在初始化时,onload中get不到表内容,会报“there is no xml named”错,我想问一下这个应该怎么处理,好像和cc.loader.load有关。