spine重新载入后无法播放动画

  • Creator 版本:2.4.5

  • 目标平台: chrome

  • 重现方式:代码差不多如下
    cc.resources.load(“spineTest/W/skeleton”, sp.SkeletonData, (err: Error, skData: sp.SkeletonData) => {
    if(err) {
    cc.error(err);
    return;
    }
    let node: cc.Node = new cc.Node;
    this.node.addChild(node);
    let sk: sp.Skeleton = node.addComponent(sp.Skeleton);
    sk.premultipliedAlpha = false;
    sk.loop = false;
    sk.skeletonData = skData;
    sk.setAnimation(0, “W1”, false);
    sk.setCompleteListener((trackEntry: sp.spine.TrackEntry) => {
    cc.resources.release(“spineTest/W/skeleton”)
    node.destroy();
    });
    });

    随便建个场景加个脚本加个按钮,将上述代码放在按钮回调中。第一次点按钮完全正常,等动画播完进入回调删除对应资源和Node后,再按按钮,则什么也没后看见,但结束回调居然还能进去skeleton.zip (3.0 MB)

  • 首个报错: 没有报错

  • 重现概率: 必现

估计是纹理丢失了 这个问题在3.x修复了 好像还没同步到2.4.x :joy_cat:

:rofl:

最近比较忙 有空了我帮你验证一下 有问题的话会在下个版本修复 不好意思啦 :sweat_smile:

有劳大大了 :star_struck:

麻烦提供一下完整demo

求管理审核通过 :heart_eyes_cat: :heart_eyes_cat: :heart_eyes_cat:

xxxxxxxxxxxxxxxxxxx.zip (3.6 MB)
测试流程:
导入之后运行test场景,点击play按钮,代码会载入spine,载入结束后会播放动画,播放结束日志会打印complete!!!,然后点击release卸载spine资源,再点play,动画没有显示,但是播放回调会依旧执行,打印complete!!!

求大佬关注下,demo已提

我打不开你的项目 你再检查一下?

用导入,不是直接打开

试了下没成功. 要不你重新打包一个再发一下

NewProject_2.zip (3.3 MB)
大佬再试试,直接打开不用导入,版本2.4.5

好的 收到

cc.resources.release(“spineTest/W/skeleton”);

问题在于你脚本中释放时没有指明要释放的资源类型. 导致没有调用skeletonData的destroy(). 因此再次加载时会默认去找cache而不会重新创建, 但此时texture已经被释放掉了. 导致显示不正确.
应该改为 cc.resources.release(“spineTest/W/skeleton”, sp.SkeletonData);

原来如此,感谢感谢~~~~~

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。