cc.Class({ extends: cc.Component, properties: { levelUp1: cc.Node, levelUp2: cc.Node, character: cc.Node, fail: cc.Node, }, start() { let self = this; cc.assetManager.loadBundle('game', (err, bundle) => { self.bundle = bundle; }); }, onWalk(target) { target.playAnimation('walk', -1) }, onLevelUp() { //this.levelUp2.getComponent(dragonBones.ArmatureDisplay).playAnimation('jump', -1) }, onSuccessDialog(level) { this.showCharacter(level, this.levelUp2) }, onLevelUpBtn(level) { this.showHeroCharacter(level) }, onFail(level) { this.showCharacter(level, this.fail) }, initStartPage() { }, showHeroCharacter(level, target, color) { target = target || this.character let loadRes = 'heroPrefab/heroSpine' + level this.loadHeroPrefab(loadRes, target, color); }, loadHeroPrefab(prefabPath, target, color) { let self = this; if (self.heroPrefab) { // cc.assetManager.releaseAsset(self.heroPrefab); // cc.de(prefab); self.heroPrefab.destroy(); self.heroPrefab = null; // self.bundle.release(self.heroPrefabPath, cc.Prefab); } self.bundle.load(prefabPath, cc.Prefab, (err, prefab) => { if (err) { console.error('加载 Prefab 失败:', err); return; } self.heroPrefabPath = prefabPath // Prefab 加载成功后,使用 instantiate 方法创建实例 self.heroPrefab = cc.instantiate(prefab); // 将实例添加到当前节点下 this.node.addChild(self.heroPrefab); // 可以设置新节点的位置等属性 self.heroPrefab.setParent(target); self.heroPrefab.setPosition(0, 0, 0); if (color) { self.heroPrefab.color = color } else { self.heroPrefab.color = cc.Color.WHITE } }); }, showCharacter(level, target, color) { target = target || this.character let loadRes = 'heroPrefab/heroSpine' + level this.loadAvatarPrefab(loadRes, target, color); }, loadPrefab(prefabPath, target, color) { let self = this; self.bundle.load(prefabPath, cc.Prefab, (err, prefab) => { if (err) { console.error('加载 Prefab 失败:', err); return; } // if (self.heroAvatarPrefab) { // cc.assetManager.releaseAsset(self.heroAvatarPrefab); // } // Prefab 加载成功后,使用 instantiate 方法创建实例 let instPrefab = cc.instantiate(prefab); // 将实例添加到当前节点下 this.node.addChild(instPrefab); // 可以设置新节点的位置等属性 instPrefab.setParent(target); instPrefab.setPosition(0, 0, 0); if (color) { instPrefab.color = color } else { instPrefab.color = cc.Color.WHITE } }); }, showAvatarCharacter(level, target, color) { target = target || this.character let loadRes = 'heroPrefab/heroSpine' + level this.loadAvatarPrefab(loadRes, target, color); }, loadAvatarPrefab(prefabPath, target, color) { let self = this; if (self.heroAvatarPrefab) { // cc.assetManager.releaseAsset(self.heroAvatarPrefab); self.heroAvatarPrefab.destroy(); self.heroAvatarPrefab = null; // self.bundle.release(self.heroAvatarPrefabPath, cc.Prefab); } if (self.heroAvatarPrefabPath != prefabPath) { self.bundle.load(prefabPath, cc.Prefab, (err, prefab) => { if (err) { console.error('加载 Prefab 失败:', err); return; } self.heroAvatarPrefabPath = prefabPath // Prefab 加载成功后,使用 instantiate 方法创建实例 self.heroAvatarPrefab = cc.instantiate(prefab); // 将实例添加到当前节点下 this.node.addChild(self.heroAvatarPrefab); // 可以设置新节点的位置等属性 self.heroAvatarPrefab.setParent(target); self.heroAvatarPrefab.setPosition(0, 0, 0); if (color) { self.heroAvatarPrefab.color = color } else { self.heroAvatarPrefab.color = cc.Color.WHITE } }); } }, });