diff --git a/.DS_Store b/.DS_Store index c257b29e612f4d945559633ec58aac425bb66366..29750aff4fa9bef62a6da7247c09d823af66f858 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/assets/cocos_generator/script/util.ts b/assets/cocos_generator/script/util.ts index d53ba2c8047f386b05cdc86fb80e4651cd2947b7..542abaccf30f8b44ed4a81f1136670e78eda9494 100644 --- a/assets/cocos_generator/script/util.ts +++ b/assets/cocos_generator/script/util.ts @@ -189,6 +189,73 @@ export async function asyncDelay(time) { }) } +export async function asyncLoadDragonBoneAnime(node, { skeJsonData: { url: skeJsonDataUrl }, texJsonData: { url: texJsonDataUrl }, texPngData: { url: texPngDataUrl } }) { + + if (!texPngDataUrl || !texJsonDataUrl || !texPngDataUrl + || texPngDataUrl == '' || texJsonDataUrl == '' || texPngDataUrl == '') { + return; + } + + return new Promise((resolve, reject) => { + if (node.animaNode) { + node.animaNode.removeFromParent(); + } + const animaNode = new cc.Node(); + animaNode.name = 'animaNode'; + animaNode.parent = node; + animaNode.active = true; + node.animaNode = animaNode; + + const dragonDisplay = animaNode.addComponent(dragonBones.ArmatureDisplay); + + const loadTexture = new Promise((resolve, reject) => { + cc.assetManager.loadRemote(texPngDataUrl, (error, texture) => { + if (error) { + reject(error); + } + resolve(texture); + }); + }); + + const loadTexJsonData = new Promise((resolve, reject) => { + cc.assetManager.loadAny({ url: texJsonDataUrl }, (error, atlasJson) => { + if (error) { + reject(error); + } + resolve(atlasJson); + }); + }); + + const loadSkeJsonData = new Promise((resolve, reject) => { + cc.assetManager.loadAny({ url: skeJsonDataUrl }, (error, dragonBonesJson) => { + if (error) { + reject(error); + } + resolve(dragonBonesJson); + }); + }); + + Promise.all([loadTexture, loadTexJsonData, loadSkeJsonData]).then(([texture, atlasJson, dragonBonesJson]) => { + const atlas = new dragonBones.DragonBonesAtlasAsset(); + atlas.atlasJson = JSON.stringify(atlasJson); + atlas.texture = texture; + + const asset = new dragonBones.DragonBonesAsset(); + asset.dragonBonesJson = JSON.stringify(dragonBonesJson); + + dragonDisplay.dragonAtlasAsset = atlas; + dragonDisplay.dragonAsset = asset; + + let armatureNames = dragonBonesJson.armature.map(data => data.name); + + if (armatureNames.length > 0) { + dragonDisplay.armatureName = armatureNames[0]; + } + resolve(animaNode); + }); + }); +} + export class FireworkSettings { baseNode; // 父节点 nodeList; // ç«èŠ±èŠ‚ç‚¹çš„array