2.0.10 通过jsb加载本地的spine资源崩溃

  • Creator 版本:

  • 目标平台: ios android 模拟器

  • 出现概率:必现

  • 额外线索: 尝试了spine3.4和3.7版本都是一样 建个空项目,用过加载下本地的spine资源,然后播放就会崩溃,测试代码为
    var str = “http://10.10.39.20:3000/resource/”;
    if(cc.sys.isNative){
    str = jsb.fileUtils.getWritablePath() + “resource/”;
    }
    // var name = “斑点狗分层”;
    var name = “win-hou”;
    var imageUrl = str + name + “.png”;
    var skeUrl = str + name + “.json”;
    var atlasUrl = str + name + “.atlas”;
    console.log(imageUrl);
    cc.loader.load(imageUrl, (error, texture) => {
    cc.loader.load({ url: atlasUrl, type: ‘txt’ }, (error, atlasJson) => {
    cc.loader.load({ url: skeUrl, type: ‘txt’ }, (error, spineJson) => {
    var asset = new sp.SkeletonData();
    asset._uuid = skeUrl;
    asset.skeletonJson = spineJson;
    asset.atlasText = atlasJson;
    asset.textures = [texture];
    asset.textureNames = [‘win-hou.png’];
    this.spine.skeletonData = asset;
    this.spine.animation = ‘idle’;
    this.spine._updateSkeletonData();
    });
    });
    });

提供下spine资源,我们测试下,谢谢支持~

resource.zip (369.0 KB)
斑点狗的是3.4 win-hou这个是3.7的 谢谢

原生平台 cc.loader.load 不支持加载远程文本数据

那这个要怎么解决呢 native端就没办法加载存储卡或远程的spine文件了 只能放在包内吗 这样局限性太大了

我之前用2.0.9测试过 load的txt是能打印出来的 加载到东西了 不过在用的时候 出现的是这个https://forum.cocos.com/t/2-0-8-spine-demo/73492 这个帖子一样的情况 2.0.10的话是直接崩溃

而且我这里用同样的代码在模拟加载龙骨资源文件 是可以正常显示的 代码如下
let node = new cc.Node();
let dragonDisplay = node.addComponent(dragonBones.ArmatureDisplay);

    let imageUrl = dragonData.imageUrl;
    let skeUrl = dragonData.skeUrl;
    let atlasUrl = dragonData.atlasUrl;

    cc.loader.load(imageUrl, (error, texture) => {
        cc.loader.load({ url: atlasUrl, type: 'txt' }, (error, atlasJson) => {
            cc.loader.load({ url: skeUrl, type: 'txt' }, (error, dragonBonesJson) => {
                let atlas = new dragonBones.DragonBonesAtlasAsset();
                console.log(atlas._uuid);
                atlas._uuid = atlasUrl;
                atlas.atlasJson = atlasJson;
                atlas.texture = texture;

                let asset = new dragonBones.DragonBonesAsset();
                asset._uuid = skeUrl;
                asset.dragonBonesJson = dragonBonesJson;

                dragonDisplay.dragonAtlasAsset = atlas;
                dragonDisplay.dragonAsset = asset;

                dragonDisplay.armatureName = 'armatureName';
                dragonDisplay.playAnimation('idle', 0);

                if(cb) cb(node);
            });
        });
    });

所以看起来应该不是不支持加载远程文本数据

使用2.0.10测试了吗?是不是版本不一样

加载龙骨的2.0.10没有测 一会我测下 上面的spine崩溃是2.0.10测的 按说2.0.9支持 不应该2.0.10升级完就不支持了啊

测试完成了 2.0.10 加载jsb.fileUtils.getWritablePath()路径下的龙骨资源可以正常显示 加载spine资源会崩溃

能给个测试demo吗?不确定你的WritablePath里面资源是否存在,但是文件读取的逻辑,spine和dragon处理上并没有什么区别。

demo.zip (1.3 MB)

把resource文件夹放在jsb.fileUtils.getWritablePath路径下就可以啦 demo里面里面读取spine和龙骨的都包括啦 感谢

大佬 有时间的时候帮忙看下 谢谢

测试正常。

这个是龙骨啊 龙骨是正常的 是spine显示不出来

我们看一下,问题复现了。

好的 感谢

该对象比较特殊,设计上是传json对象,不是传json字符串,自己手动处理下,后面会做优化。

好的 已解决 非常感谢

大佬,请问在creator1.8.2版本 native 上,把远程spine资源下载放到了resource下,然后能通过cc.loader.loadRes来加载spine吗?我这边加载的时候报错Error: sp.SkeletonData in “resources/xx/xx/xx” does not exist