public static replaceSlotImg(node: Node, imgPath: string, slotName: string | string[]): void {
if (node != null) {
resources.load(imgPath, SpriteFrame, (err, sprite) => {
if (err) {
console.error(err.message);
} else {
let comp = node.getComponent(dragonBones.ArmatureDisplay);
let texture = comp.dragonAtlasAsset._textureAtlasData.textures[sprite.name] as dragonBones.CCTextureData;
if (texture == null) {
texture = new dragonBones.CCTextureData();
texture.spriteFrame = sprite;
texture.region.width = sprite.rect.width;
texture.region.height = sprite.rect.height;
// 这里有bug,addTexture后的key是undefined,所以手动赋值一下
comp.dragonAtlasAsset._textureAtlasData.textures[sprite.name] = texture;
comp.dragonAtlasAsset._textureAtlasData.addTexture(texture);
}
if (typeof slotName == "string") {
slotName = [slotName];
}
for (let name of slotName) {
// 这里只处理了slot里面的第一张图,有需要可以自行扩展
let slot = comp.armature().getSlot(name);
let displayData = slot._displayDatas[0];
if (displayData instanceof dragonBones.ImageDisplayData) {
displayData.texture = texture;
slot["_updateDisplayData"]();
}
}
}
});
}
}
2赞
龙骨都凉了,还有人用?