超级精简版龙骨slot局部换装

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赞

龙骨都凉了,还有人用?