加载龙骨资源,初始化dragonAtlasAsset报错

引擎版本: v2.3.0
测试环境: web

代码:

beginLoad() {
    let name = "finn"
    const resources = [
        cc.url.raw(`resources/${name}_ske.json`),
        cc.url.raw(`resources/${name}_atlas.json`),
        cc.url.raw(`resources/${name}_tex.png`),
    ];
    cc.loader.load(resources, (err, assets) => {
        let factory = dragonBones.CCFactory.getInstance();
        let data = JSON.parse(assets.getContent(resources[0])._dragonBonesJson);
        factory.parseDragonBonesData(data);
        let atlasData = JSON.parse(assets.getContent(resources[1])._atlasJson);
        factory.parseTextureAtlasData(atlasData, assets.getContent(resources[2]));
        this.finnDisplay.dragonAsset = cc.loader.getRes(resources[0]);
        console.log("dragon atlas asset = ", cc.loader.getRes(resources[1]))
        this.finnDisplay.dragonAtlasAsset = cc.loader.getRes(resources[1]);
        this.finnDisplay.armatureName = "finn";
        this.finnDisplay.playAnimation("idle", -1);
    })
}

报错截图:

工程文件 BoneTest.zip (1.5 MB)

使用loadDir 是可行的,这要就需要把每个龙骨单独目录,也挺麻烦。

loadDir() {
        let finn = this.finnDisplay;
        cc.loader.loadResDir("finn/", function (err, assets) {
            if (err || assets.length <= 0)
                return;
            assets.forEach(asset => {
                let data = asset;
                console.log("asset = ", data);
                if (asset instanceof dragonBones.DragonBonesAsset) {
                    finn.dragonAsset = data;
                }
                if (asset instanceof dragonBones.DragonBonesAtlasAsset) {
                    finn.dragonAtlasAsset = data;
                }
            });
            finn.armatureName = "finn";
            finn.playAnimation("idle", -1);
        })
    }

我把龙骨资源通过 dragonBones.CCFactory 缓存了,我怎么再次使用呢?

不要用cc.url.raw, 直接就路径

多谢,我尝试了一下,改用了 cc.loader.loadResArray,没有问题了。但是,我用dragonBones.CCFactory 缓存的动画怎么再次复用呢?

比如 你这里 finn.dragonAsset = data; 就不需要再去load资源了 可以直接用CCFactory 里面的数据,具体用法你可以看下源码