-
Creator 版本: <-- 3.8.4 -->,看源码都有问题
-
重现方式:将spine的skeletonData = null后,再给设置一个新的skeletonData = newData,这时候findAnimation获取不到任何动画信息,也显示不了新的动画
通过调试发现在findAnimation时this._skeleton为null,引擎源码如下:
public findAnimation (name: string): spine.Animation | null {
if (this._skeleton) {
return this._skeleton.data.findAnimation(name);
}
return null;
}
问题在于设置skeletonData = null的时候_updateSkeletonData里面把this._skeleton置为null了,源码如下:
protected _updateSkeletonData (): void {
const skeletonData = this._skeletonData;
if (!isSkeletonDataValid(this._skeletonData)) {
this._runtimeData = null!;
this._state = null!;
this._skeleton = null!;
this._textures = [];
this._refreshInspector();
if (this._isRenderable) {
SkeletonSystem.getInstance().remove(this);
}
return;
}
难道是skeletonData = null后这个spine就不能用了?为什么设置skeletonData的时候不检查this._skeleton是不是为空呢?这里存在漏洞,出了问题找半天!!!!!
@boyue @dumganhar @panda