cc.Class({ extends: cc.Component, properties: { GameStates: { default: null, type: cc.Node, serializable: true, }, ChiVoice: { default: null, type: cc.AudioClip, serializable: true, }, }, start () { this.GirlAnimations = this.GameStates.getComponent('GameStates').GirlAnimations; //获取 ArmatureDisplay this._armatureDisPlay = this.node.getComponent(dragonBones.ArmatureDisplay); this._armature = this._armatureDisPlay.armature(); //Hide HeadPhone // this.slot = this._armature.getSlot('erji'); // this.slot.visible = false; //Add Animation Callback this._armatureDisPlay.addEventListener(dragonBones.EventObject.START, this.animationEventHandler, this); this._armatureDisPlay.addEventListener(dragonBones.EventObject.COMPLETE, this.animationEventHandler, this); // Is playing any animation this.BPlayingAnimation = false; // 重复次数 let repeat = cc.REPEAT_FOREVER; // 以秒为单位的时间间隔 let interval = 10; // 开始延时 let delay = 0; this.schedule(function() { if(!this.BPlayingAnimation) { // let RandNum = this.Rand(0,100); // if(RandNum>20) // { // this.Idle( 2); // } // else // { // this.Happy( 1); // } let RandBool = this.Rand(0,1); let RandNum = this.Rand(0,this.GirlAnimations.length-1); let AnimName = this.GirlAnimations[0,RandNum]; if(RandBool==0) { if(AnimName == 'Idle') { this.Idle( 1); let RandNum100 = this.Rand(0,100); if(RandNum100<20) { cc.audioEngine.playEffect(this.ChiVoice, false); } } } } }, interval, repeat, delay); }, Idle(PlayTimes){ if(this.GirlAnimations.indexOf('Idle')==-1) return; this._armatureDisPlay.timeScale =2; this._armatureDisPlay.playAnimation('Idle', PlayTimes); }, Happy(PlayTimes){ if(this.GirlAnimations.indexOf('Happy')==-1) return; this._armatureDisPlay.timeScale =2; this._armatureDisPlay.playAnimation('Happy',PlayTimes); }, Shy(){ if(this.GirlAnimations.indexOf('Shy')==-1) return; if(this.BPlayingAnimation) return; this._armatureDisPlay.timeScale =2; this._armatureDisPlay.playAnimation('Shy', 1); }, Angry(){ if(this.GirlAnimations.indexOf('Angry')==-1) return; if(this.BPlayingAnimation) return; this._armatureDisPlay.timeScale =2; this._armatureDisPlay.playAnimation('Angry', 1); }, animationEventHandler: function animationEventHandler(event) { if (event.type == dragonBones.EventObject.START) { this.BPlayingAnimation = true; // cc.log('START='+this._armatureDisPlay.animationName); } else if (event.type == dragonBones.EventObject.COMPLETE) { // cc.log('COMPLETE='+this._armatureDisPlay.animationName); this.BPlayingAnimation = false; } }, Rand(star, end){ let random = Math.floor(Math.random()*(end-star+1)+star); return random; }, });