Animation组件的使用

卫深
2023-12-01
/**
 * Author:W
 * 动画组件Animation的使用
 */
cc.Class({
    extends: cc.Component,

    properties: {
        
    },

    // LIFE-CYCLE CALLBACKS:

    onLoad () {
        this.anim = this.getComponent(cc.Animation);

        //动画状态事件回调注册
        this.anim.on('play',this.onPlay,this);
        this.anim.on('stop',this.onStop,this);
        this.anim.on('lastframe',this.onLastFrame,this);
        this.anim.on('finished',this.onFinished,this);
        this.anim.on('pause',this.onPause,this);
        this.anim.on('resume',this.onResume,this);
    },

    start () {

    },

    onDestroy(){
        //动画状态事件回调注册
        this.anim.on('play',this.onPlay,this);
        this.anim.on('stop',this.onStop,this);
        this.anim.on('lastframe',this.onLastFrame,this);
        this.anim.on('finished',this.onFinished,this);
        this.anim.on('pause',this.onPause,this);
        this.anim.on('resume',this.onResume,this);
    },

    onPlay:function(){},
    onStop:function(){},
    onLastFrame:function(){},
    onFinished:function(){},
    onPause:function(){},
    onResume:function(){},

    //动画播放
    playAni:function(){
        //指定动画文件播放
        anim.play('Idle');

        // //指定从动画文件的1s开始播放
        // anim.play('Idle',1);

        // //如果设置了defaultclip动画片段时,则默认播放该动画
        // anim.play();
    },

    //动画播放:【复合动画:支持同时播放多个动画文件】
    playAdditiveAni:function(){
        this.anim.playAdditive('Idle');
        this.anim.playAdditive('Scale');
    },

    //暂停播放
    pauseAni:function(){
        //暂停Idle动画
        this.anim.pause('Idle');

        // //暂停所有动画
        // this.anim.pause();
    },

    //恢复播放
    resumeAni:function(){
        //恢复Idle动画播放
        this.anim.resume('Idle');
        // //恢复所有动画播放
        // this.anim.resume();
    },

    //停止播放
    stopAni:function(){
        //停止Idle动画
        this.anim.stop('Idle');

        // //停止所有动画
        // this.anim.stop();
    },

    //设置动画时间
    setAniTime:function(){
        //设置Idle动画的播放时间为1s
        this.anim.setCurrentTime(1,'Idle');

        // //设置所有动画播放时间为1秒
        // this.anim.setCurrentTime(1);
    },

    //获取当前播放动画生成的AnimationState实例,它包含了很多动画运行的状态信息,可以修改设置
    setAnimationState:function(){
        // //获取AnimtionState实例方式1
        // var animState = this.anim.play('Idle');
        //获取AnimationState实例方式2
        var animState = this.anim.getAnimationState('Idle');

        //获取动画关联的clip
        var clip = animState.clip;
        //获取动画的名字
        var name = animState.name;
        //获取动画的播放速度
        var speed = animState.speed;
        //获取动画的播放总时长
        var duration = animState.duration;
        //获取动画的播放时间
        var time = animState.time;
        //获取动画的重复次数
        var repeatCount = animState.repeatCount;
        //获取动画的循环模式
        var wrapMode = animState.wrapMode;
        //获取动画是否正在播放
        var playing = animState.isPlaying;
        //获取动画是否已经暂停
        var paused = animState.isPaused;
        //获取动画的帧率
        var frameRate = animState.frameRate;

        //【注意:可以对上述可修改的属性进行修改】

    },


    //动画事件【在编辑动画时,添加的动画帧事件】
    onAniEvent:function(num,str){

    }
    

    // update (dt) {},
});

 类似资料: