同样的代码,步骤是:
[1] 用 cc.loader.loadRes 加载 Spine 动画,
[2] 在 completeCallback 中:
let spineScript: sp.Skeleton = stNode.getComponent(sp.Skeleton);
if(!spineScript)
spineScript = stNode.addComponent(sp.Skeleton);
spineScript.skeletonData = res; // res 就是加载到的 Spine 动画资源。
spineScript.setSkin(sSkinName);
第一次加载资源时,是正常的。同时,已加载的资源我们做了缓存。
所以第二次加载的时候就直接从缓存读取资源了,然后紧接着再执行步骤[2]。
但这时再调用 setSkin 动画会消失,不能起到整体换肤的效果。
setSkin: function(skinName) {
if (this._skeleton) return this._skeleton.setSkinByName(skinName);
return null;
}断点进去是 setSkin 的时候 this._skeleton 为空。
