playAnimationByUserId(name: string, animation: string, times: number = 0, callback?: Function) {
this.ske.removeEventListener(dragonBones.EventObject.START);
this.ske.removeEventListener(dragonBones.EventObject.COMPLETE);
const mod = +this.id % playerNamesArray.length;
const roleName = playerNamesArray[mod];
const boneDisplayObj = playerNamesBoneIndexMap[name];
if (!boneDisplayObj) {
console.warn(`没有找到对应骨骼数据:name:${name} animation: ${animation}`);
return;
}
const replaceTargetSlot = () => {
const armature = this.ske.armature() as dragonBones.Armature;
const slotKeys = Object.keys(boneDisplayObj);
for (let i = 0, len = slotKeys.length; i < len; i++) {
const key = slotKeys[i];
let slot = armature.getSlot(key);
slot.displayIndex = boneDisplayObj[key];
}
}
replaceTargetSlot();
this.ske.playAnimation(animation, times);
this.ske.addEventListener(dragonBones.EventObject.START, replaceTargetSlot);
if (times == 0) {
this.ske.addEventListener(dragonBones.EventObject.COMPLETE, replaceTargetSlot);
} else {
return new Promise((resolve, reject) => {
this.ske.addEventListener(dragonBones.EventObject.COMPLETE, () => {
this.ske.removeEventListener(dragonBones.EventObject.COMPLETE);
resolve(null);
callback && callback();
});
})
}
} 这个换肤为什么没有生效呢,我是在动画开始播放之前换了一次,播放结束之后又换了一次,这个动画是通过插槽控制显示和隐藏的,REALTIME模式下不成功,PRIVATE_CACHE模式下,会闪烁,有大佬遇到这个问题没
版本2.4.8