版本:2.0.1
系统:win7
骨骼 下面有三个插槽
请问如何通过控制显示或隐藏
结构如图:
你指的是龙骨动画还是spine
这样貌似就可以了:
private changeCloth(skeleton: Skeleton, slotName, targetSkinName, targetAttaName): void
{
let slot = skeleton.findSlot(slotName);
let atta;
if (targetAttaName != null && targetAttaName != “”)
{
let skeletonData = skeleton.skeletonData.getRuntimeData();
let slotIndex = skeletonData.findSlotIndex(slotName);
let skin = skeletonData.findSkin(targetSkinName);
atta = skin.getAttachment(slotIndex, targetAttaName);
}
else
atta = null;slot.setAttachment(atta); // skeleton.setSkin(targetSkinName); // skeleton.setAttachment(slotName, targetAttaName);
}
你的方案是可行的,直接将 attachment 数据清空就看不到了。
creator 2.0.5 slot.setAttachment(null) 提示setAttachment这个方法没有,而且也没有效果,slot无法隐藏,有其他方法吗?
应该是有的。你排查一下代码,
有这个方法setAttachment(slotName: string, attachmentName: string): void;
我去底层也看到当attachmentName=null的时候执行slot.setAttachment(null).但是没有效果,我的那个slot还是显示的。是不是那个slot有序列动画才隐藏不了?那怎么隐藏呢?
你这改的底层吗?我设置slot.setAttachment(null);没有效果,是不是我的slot里面图有帧动画的原因
我没有改底层。
我这边是有效果的。
你要隐藏的部位,美术导出的时候不应该K帧。
然后这个部位才能换装或者选择隐藏。
那我猜测是对的,我要隐藏的部分有动画,我用了阿尔法通道去隐藏的
我看龙骨的文档,将插槽设置为-1也可以。
let asd = this.node.getChildByName(‘dragonbones’).getComponent(dragonBones.ArmatureDisplay);
let ccc:dragonBones.Armature = asd.armature();
ccc.getSlot(‘A’).displayIndex = -1;
当一次掘墓者把
改透明值如果重新显现 uv不一致会导致变色
.setAttachment(null);还是使用这个方便更为稳妥一些
如果需要显现原来的图片就提前保存Attachment到时候重新赋值就好了