Animation 动画系统 && Action 动作系统
动画系统
动画一般分为2种:
- 关键帧动画
- 自动计算2帧之间的中间数值
- 序列帧动画
- 每帧都有不同的SpriteFrame
- 快速翻动帧,产生帧动画
要控制某个节点的动画,需要为组件添加Animation动画控制器组件,
Animation组件中需要添加AnimationClip作为操作动画的源文件,
AnimationClip文件需要再动画编辑器中进行编辑:
按帧修改动画节点的属性,作为关键帧。
包含以下属性:
- 取样率 Sample
- 影响可设置帧的最小精度单位
- 播放速度 Speed
- 循环模式 WrapMode
- 可以设置循环播放、正放倒放交替等等模式
- 时间曲线
- 双击编辑动画速率函数
- 帧事件
- 支持添加帧事件,事件名和参数都可定制
- 会从添加到组件中的脚本内找到与定义的帧事件同名的方法
播放动画 play
- 可选参数1:动画名
- 可选参数2:开始时间
1
anim.play('test', 1)
暂停 pause
恢复 resume
停止 stop
设置动画的当前时间 setCurrentTime
- play 开始动画
- stop 停止动画
- pause 暂停动画
- resume 恢复动画
- lastframe 存在循环的动画播放到最后一帧时
- finished 动画播放结束
事件回调的配置:
1 | var animation = this.node.getComponent(cc.Animation); |
动作系统
cc.Node存在以下支持进行动作的API:
- runAction 执行动作
- 参数action:cc.Action,指定执行的动作
- stopAction 停止指定动作
- 参数action:cc.Action,指定执行的动作
- stopAllActions 停止所有动作
cc.Action动作类型可以通过设置tag来完成set/get/run/stop等一系列操作:
1 | action.setTag(0) |
cocos中动作系统主要分为以下几类
- 容器动作
- 用于组织单个或多个动作的执行顺序、次数、速度
- 即时动作
- 无关执行时间、瞬间实现的动作
- 时间间隔动作/基础动作
- 从开始执行到结束执行之间,存在一系列中间值计算的动作
- 缓动动作
- 时间间隔动作的附属属性,操作一系列中间值与时间变化的方式
sequence 顺序执行动作
1
2let seq1 = cc.sequence(act1, act2)
let seq2 = cc.sequence(actArray)repeat 重复指定次数的某个动作
1
let rep = cc.repeat(cc.sequence(jump2, jump1), 5)
repeatForever 永远重复一个动作
1
let repeat = cc.repeatForever(act)
spawn 并行执行多个任务
1
2
3
4let action = cc.spawn(
cc.jumpBy(2, cc.v2(300, 0), 50, 4),
cc.rotateBy(2, 720)
)speed 速率
1
2let action = cc.scaleTo(0.2, 1, 0.6)
let newAction = cc.speed(action, 0.5)
show 立即显示
1
let action = cc.show()
hide 立即隐藏
1
let action = cc.hide()
toggleVisibility 显隐状态切换
1
var action = cc.toggleVisibility();
removeSelf 从父节点移除自身
1
var action = cc.removeSelf()
flipX X轴翻转
1
var action = cc.flipX(true)
flipY Y轴翻转
1
var action = cc.flipY(true)
place 放置在目标位置
1
let action = cc.place(cc.v2(200, 200))
callFunc 执行回调函数
1
2
3
4// 参数1:回调函数
// 参数2:回调目标
// 参数3:传递参数
var finish = cc.callFunc(this.callbackFunc, this.target, true);
moveTo 移动到目标位置
moveBy 移动指定的距离
rotateTo 旋转到目标角度
rotateBy 旋转指定的角度
scaleTo 缩放到指定倍数
scaleBy 按指定倍数缩放节点
skewTo 偏移到目标角度
skewBy 偏移指定的角度
jumpBy 跳跃指定距离
jumpTo 用跳跃的方式移动到目标位置
follow 追踪目标节点位置
bezierTo 按照贝塞尔曲线轨迹移动到目标位置
bezierBy 按照贝塞尔曲线轨迹移动指定距离
blink 闪烁(基于透明度)
fadeTo 渐隐(给予透明度)
fadeIn 渐显
fadeOut 渐隐
tintTo 修改颜色到指定值
tintBy 按照制定增量修改颜色
delayTime 延迟指定的时间量
reverseTime 反转目标动作时间轴