import { _decorator, Component, Node, sp } from 'cc'; const { ccclass, property } = _decorator; export enum BossWarnType{ /** boss警告 */ Boss = 0, /** 中期boss警告 */ MidBoss = 1, /**最后一波警告 */ LastWave = 2, /**大波怪物来袭警告 */ LargeWave = 3, /**空降兵 */ Paratroops = 4, /**开场 */ StartBattle = 5, } @ccclass('BossWarnSpine') export class BossWarnSpine extends Component { @property({type: [Node]}) spineNode: Node[] = [] start() { } /** 播放警告动画 */ playWarnAnim(warnType: BossWarnType){ if(warnType == BossWarnType.Boss){ gg.audio.playEffect({ name: "BOSS来袭提示" ,path:"sound/怪物来袭/"}); }else if(warnType == BossWarnType.MidBoss){ gg.audio.playEffect({ name: "精英怪来袭" ,path:"sound/怪物来袭/"}); }else if(warnType == BossWarnType.LastWave){ gg.audio.playEffect({ name: "最后一波" ,path:"sound/怪物来袭/"}); }else if(warnType == BossWarnType.LargeWave){ gg.audio.playEffect({ name: "最后一波" ,path:"sound/怪物来袭/"}); }else if(warnType == BossWarnType.Paratroops){ gg.audio.playEffect({ name: "紧急" ,path:"sound/怪物来袭/"}); }else if(warnType == BossWarnType.StartBattle){ gg.audio.playEffect({ name: "最后一波" ,path:"sound/怪物来袭/"}); } let spineNode = this.spineNode[warnType] if(!spineNode){ return }else{ spineNode.active = true } let spine = spineNode.getComponent(sp.Skeleton) spine.setCompleteListener(()=>{ spine.setCompleteListener(null); spineNode.destroy(); this.node.destroy(); }) // this.playSpine(spine,()=>{ // this.node.destroy() // }) } public playSpine(spine: sp.Skeleton, callback: Function = null, timeScale = 1, loop = false) { spine.setCompleteListener(() => { spine.setCompleteListener(null); if (callback) callback(); }); spine.timeScale = timeScale let spineName = spine.animation spine.setAnimation(0, spineName, loop); } }