import AnimatorSpine from "../../animator/AnimatorSpine" ; import AnimatorSpineSecondary from "../../animator/AnimatorSpineSecondary" ; const { ccclass , property } = cc . _decorator ; @ ccclass export default class SpineScene extends cc . Component { @ property ( sp . Skeleton ) SpineBoy : sp . Skeleton = null ; private _updateSpeed : boolean = false ; private _speed : number = 0 ; private _animatorMain : AnimatorSpine = null ; private _animatorSecondary : AnimatorSpineSecondary [ ] = [ ] ; protected onLoad ( ) { this . _animatorMain = this . SpineBoy . getComponent ( AnimatorSpine ) ; this . _animatorMain . onInit ( ( fromState , toState ) => { cc . log ( `state change: ${ fromState } -> ${ toState }` ) ; } ) ; this . _animatorSecondary = this . SpineBoy . getComponents ( AnimatorSpineSecondary ) ; cc . systemEvent . on ( cc . SystemEvent . EventType . KEY_DOWN , this . onKeyDown , this ) ; cc . systemEvent . on ( cc . SystemEvent . EventType . KEY_UP , this . onKeyUp , this ) ; } protected update ( dt ) { this . _speed = this . _updateSpeed ? Math . min ( 5 , this . _speed + dt ) : Math . max ( 0 , this . _speed - dt * 2 ) ; this . _animatorMain . setNumber ( 'speed' , this . _speed ) ; } protected onDestroy ( ) { cc . systemEvent . off ( cc . SystemEvent . EventType . KEY_DOWN , this . onKeyDown , this ) ; cc . systemEvent . off ( cc . SystemEvent . EventType . KEY_UP , this . onKeyUp , this ) ; } private onKeyDown ( event ) { let code = event . keyCode ; switch ( code ) { case cc . macro . KEY . left : case cc . macro . KEY . right : this . _updateSpeed = true ; break ; case cc . macro . KEY . space : this . _animatorMain . autoTrigger ( 'jump' ) ; break ; case cc . macro . KEY . k : this . _animatorSecondary [ 0 ] . autoTrigger ( 'shoot' ) ; default : break ; } } private onKeyUp ( event ) { let code = event . keyCode ; switch ( code ) { case cc . macro . KEY . left : case cc . macro . KEY . right : this . _updateSpeed = false ; break ; default : break ; } } }