import AnimatorSpine from "./AnimatorSpine" ; import AnimatorBase , { AnimationPlayer } from "./core/AnimatorBase" ; import AnimatorStateLogic from "./core/AnimatorStateLogic" ; const { ccclass , property , requireComponent } = cc . _decorator ; /**
 * Spine状态机组件（次状态机），同一节点可添加多个，用于在不同track中播放动画，trackIndex必须大于0
 */ @ ccclass @ requireComponent ( sp . Skeleton ) export default class AnimatorSpineSecondary extends AnimatorBase { @ property ( { tooltip : CC_DEV && '动画播放的trackIndex，必须大于0' } ) TrackIndex : number = 1 ; /** 主状态机 */ private _main : AnimatorSpine = null ; /** spine组件 */ private _spine : sp . Skeleton = null ; protected start ( ) { if ( ! this . PlayOnStart || this . _hasInit ) { return ; } this . _hasInit = true ; this . _spine = this . getComponent ( sp . Skeleton ) ; this . _main = this . getComponent ( AnimatorSpine ) ; this . _main . addSecondaryListener ( this . onAnimFinished , this ) ; if ( this . AssetRawUrl !== null ) { this . initJson ( this . AssetRawUrl . json ) ; } } @override
      public onInit ( ... args ) { if ( this . PlayOnStart || this . _hasInit ) { return ; } this . _hasInit = true ; this . initArgs ( ... args ) ; this . _spine = this . getComponent ( sp . Skeleton ) ; this . _main = this . getComponent ( AnimatorSpine ) ; this . _main . addSecondaryListener ( this . onAnimFinished , this ) ; if ( this . AssetRawUrl !== null ) { this . initJson ( this . AssetRawUrl . json ) ; } } @override
     *  param animName param loop protected playAnimation ( animName , loop ) { if ( animName ) { this . _spine . setAnimation ( this . TrackIndex , animName , loop ) ; } else { this . _spine . clearTrack ( this . TrackIndex ) ; } } }