zoukankan      html  css  js  c++  java
  • cocos creator基础-(十)cc.Animation动画组件的使用

    1: 掌握动画编辑器与cc.Animation组件的使用;

    // 节点、动画、动画文件的关系
    node : {Animation : {AnimationClip}}

    动画编辑器使用

    1: 创建一个节点;
    2: 为这个节点添加一个动画组件 cc.Animation;
    3: 为这个动画组件新建一个动画文件 --> AnimationClip对象;
    4: cc.Animation 控制面板的属性:
      (1): default Anim Clip: 默认的播放的动画剪辑;
      (2): Clips: 动画剪辑的数组集合
      (3): Play onLoad: 是否在加载的时候开始播放;

    动画编辑器的原理

    1: 时间轴
    2: 在不同的时刻,调整节点以及孩子节点的不同的属性的值,然后创建出补间动画;
    3: 节点调动画的属性:
      位置, 缩放, 旋转, 大小, 颜色, 透明度, 锚点, 扭曲, ...;
    4: 动画编辑器也可以调节节点的子节点
    5: 动画参数:
      Simaple: 1秒多少帧, Speed: 速度,播放速度,越小越慢,
      wrapMode: Normal, Loop, PingPong, Reverse, Loop Reverse, PingPongReverse;
    6: 动画
      (1)添加动画属性
      (2)添加关键帧/删除关键帧,选到关键帧,在属性编辑器上编辑和修改;
      (3)编辑补间动画曲线路径;

    Animation组件

    1: 代码中获得cc.Animation组件:
      编辑器关联;
      代码获取组件;
    2: Animation组件主要的方法:
      play([name], [start_time]), 播放指定的动画,如果没有制定就播放默认的动画;
      playAdditive: 与play一样,但是不会停止当前播放的动画;
      stop([name]): 停止指定的动画,如果没有指定名字就停止当前播放的动画;
      pause/resume: 暂停唤醒动画;
      getClips: 返回组件里面带的AnimationClip数组
    3: Animation重要的属性:
      defaultClip: 默认的动画剪辑;
      currentClip: 当前播放的动画剪辑;
    4: Animation播放事件: 动画组件对象来监听on,不是节点
      play : 开始播放时 stop : 停止播放时 pause : 暂停播放时 resume : 恢复播放时
      lastframe : 假如动画循环次数大于 1,当动画播放到最后一帧时 finished : 动画播放完成时

    动画里面调用代码函数

    1:插入一个时间到动画里面;
    2: 编辑这个时间触发的函数: 名字 + 参数
    3: 遍历当前动画组件所挂节点上面所有的脚本或组件,根据这个名字来触发函数;
      动画编辑器里插入test_anima_event事件,动画节点挂的节点的脚本里就要有 对应名字 的方法才能触发(这种方法容易不知道事件的来源,不推荐)
    4: 要慎用,代码和动画之间不易太多的调用;

    cc.Class({
        extends: cc.Component,
    
        properties: {
            // foo: {
            //    default: null,      // The default value will be used only when the component attaching
            //                           to a node for the first time
            //    url: cc.Texture2D,  // optional, default is typeof default
            //    serializable: true, // optional, default is true
            //    visible: true,      // optional, default is true
            //    displayName: 'Foo', // optional
            //    readonly: false,    // optional, default is false
            // },
            // ...
            // 编辑器里面绑定
            anim: {
                type: cc.Animation,
                default: null,
            },
        },
    
        // use this for initialization
        onLoad: function () {
            var anim_node = this.node.getChildByName("anim");
            this.anim_com = anim_node.getComponent(cc.Animation);
    
            // 是动画组件cc.Animation组件实例来监听;
            this.anim_com.on("play", function() {
                console.log("begin play");
            }.bind(this), this);
    
            
        },
    
        start: function() {
            // this.anim_com.play("anim_class");
            this.anim_com.play(); // 播放的是defalut clip指向的动画clip
        },
    
        // called every frame, uncomment this function to activate update callback
        // update: function (dt) {
    
        // },
    });
  • 相关阅读:
    [转]学习B站动态转发抽奖脚本
    【LeetCode】236. 二叉树的最近公共祖先
    Java中邮件的发送
    最长递增子序列(LIS)
    最长公共子序列(LCS)
    【LeetCode】69. x 的平方根
    Lombok的使用
    Centos 中文乱码解决方法
    FWT,FST入门
    [UOJ310][UNR #2]黎明前的巧克力
  • 原文地址:https://www.cnblogs.com/orxx/p/10444137.html
Copyright © 2011-2022 走看看