当加载已经加载过的资源的时候,代码就卡住了,不能往下跑。
下面是在加载时打的log:

后面的数字可以理解为资源的标识,加载前打的log。
当“10004”加载后,再次加载,代码就不能往下执行了。
如果只加载一次“10004”,代码就能正常跑下去。
还是发代码出来看看
cc.loader.loadRes('Data/character',function(err,data){
if (err){
cc.error(err.message || err);
return;
}
var battleData = require('battleData');
for (var i = 0; i < data.length; i++){
let charData = data[i];
battleData.characterData[charData.id] = charData;
}
for (var i = 0; i < battleData.characterList.length; i++)
{
var charRes = battleData.characterData[battleData.characterList[i]].res;
var charHeadPic = battleData.characterData[battleData.characterList[i]].headPic;
self.x = i;
cc.log('loading' + battleData.characterList[i]);
cc.loader.loadRes('Character/'+ charRes +'_ske',dragonBones.DragonBonesAsset,function(err,DBAsset){
if (err){
cc.error(err.message || err);
return;
}
let battleData = require('battleData');
battleData.dragonBonesDBAsset[DBAsset._name] = DBAsset;
});
cc.loader.loadRes('Character/'+ charRes +'_tex',dragonBones.DragonBonesAtlasAsset,function(err,DBAtlasAsset){
if (err){
cc.error(err.message || err);
return;
}
let battleData = require('battleData');
battleData.dragonBonesDBAtlasAsset[DBAtlasAsset._name] = DBAtlasAsset;
});
cc.loader.loadRes('HeadPic/' + charHeadPic,cc.SpriteFrame,function(err,pic){
if (err){
cc.error(err.message || err);
return;
}
let battleData = require('battleData');
battleData.headPic[pic._name] = pic;
let count = Object.getOwnPropertyNames(battleData.headPic).length;
if (count === battleData.characterList.length + 1)
{
cc.director.loadScene('Battle');
}
})
}
})

battleData的characterList里面如果只写一个100004就能load到下一个场景。
如果写2个,无法加载到下一个场景。
逻辑问题
这个判断是不会成功的,因为两次加载 10004 的 pic._name 都是一样的,所以 battleData.headPic 的 property 长度只会计算一次。。。
这些逻辑问题其实是可以通过 Chrome 调试工具很轻松定位到的,还麻烦发出问题之前,仔细检查,定位问题,只有定位到问题,你才能知道是自己逻辑问题还是引擎问题,别人也能更高效的帮你解决问题
不好意思,新手以前没写过代码,很多时候出了问题不太会找解决方案。
麻烦啦,抱歉!以后会多多注意的!