龙骨引擎bug:骨骼动画数据文件xx_ske.json 里的 name 和 使用的纹理文件 yy_tex.json 里的 name 不一致的时候画不出东西来。编辑器里和模拟器里都显示不出来,应该是一个问题吧。
我分析的原因:
首先是初始化Slot的Display数据时候对纹理文件的名字判断错误
BaseFactory.prototype._getSlotDisplay = function(dataPackage, displayData, rawDisplayData, slot) {
var dataName = null !== dataPackage ? dataPackage.dataName : displayData.parent.parent.parent.name; // <= 这个dataName就是 xx_ske.json 里的name,不是yy_tex.json 里的 name
var display = null;
switch (displayData.type) {
case 0: // <= 图片纹理类型
var imageDisplayData = displayData;
null === imageDisplayData.texture
? imageDisplayData.texture = this._getTextureData(dataName, displayData.path) // <= imageDisplayData.texture 为null的时候不应该先尝试用 dataPackage.textureAtlasName 来取纹理图片吗?
: null !== dataPackage && dataPackage.textureAtlasName.length > 0 && (imageDisplayData.texture = this._getTextureData(dataPackage.textureAtlasName, displayData.path));
display = null !== rawDisplayData && 2 === rawDisplayData.type && this._isSupportMesh() ? slot.meshDisplay : slot.rawDisplay;
break;
然后呢,这个 dataPackage 是用
BaseFactory.prototype._fillBuildArmaturePackage = function (dataPackage, dragonBonesName, armatureName, skinName, textureAtlasName)
这个函数初始化的,但是几个调用这个函数的地方textureAtlasName基本上是不传的。这两方面原因造成了这个bug