-
Notifications
You must be signed in to change notification settings - Fork 207
ObjectAnimation
xuwhale6 edited this page Aug 7, 2020
·
8 revisions
序号 | 构造函数 | 功能描述 | 参数描述 | 返回值 | 详述 |
---|---|---|---|---|---|
1. | ObjectAnimation(AnimProperty value, View target) | 构造方法 | value:动画属性 | - | - |
序号 属性名称 类型 描述 1. delay number 动画开始延迟时间 2. duration number 非Spring类型使用,控制动画时长 3. repeatCount number 重复次数 4. repeatForever boolean 动画是否永远重复执行 5. autoReverses boolean 动画是翻转重复 6. startBlock func(animation) 动画开始回调 7. pauseBlock func(animation) 动画暂停回调 8. resumeBlock func(animation) 动画恢复回调 9. repeatBlock func(animation, count) 动画重复回调 10. finishBlock func(animation, finish) 动画完成回调
序号 | 名称 | 功能描述 | 参数描述 | 返回值 | 详述 |
---|---|---|---|---|---|
1. | void from(value ...) | 动画开始值 | 参见AnimProperty | - | - |
2. | void to(value ...) | 动画结束值 | 参见AnimProperty | - | - |
3. | AnimProperty property() | 获取动画属性值 | - | - | - |
4. | void timing(Timing timing, table config) | 动画时间函数及配置,配置键名及意义参考TimingConfig,非Spring忽略config | - | - | - |
5. | View target() | 获取动画视图对象 | - | - | - |
6. | void start() | 开始动画 | - | - | - |
7. | void pause() | 暂停动画 | - | - | - |
8. | void resume() | 恢复动画 | - | - | - |
9. | void stop() | 强制结束动画 | - | - | - |
序号 | 名称 | 值 | 详述 |
---|---|---|---|
1. | Default | MLATimingFunctionDefault | - |
2. | Linear | MLATimingFunctionLinear | - |
3. | EaseIn | MLATimingFunctionEaseIn | - |
4. | EaseOut | MLATimingFunctionEaseOut | - |
5. | EaseInEaseOut | MLATimingFunctionEaseInEaseOut | - |
6. | Spring | MLATimingFunctionSpring | - |
序号 | 名称 | 值 | 详述 |
---|---|---|---|
1. | Velocity | value | Spring类型使用,动画初始动量,需要在动画开始前设置初始值。参数个数和from/to保持一致,均为number类型,参数需要用数组包裹,例如:{x,y} |
2. | Bounciness | number | Spring类型使用,反弹力,和springSpeed数值一起可以改变动画效果,数值越大,弹簧运动范围越大,振动和弹性越大, 参考 POP 动画库 定义为[0,20]范围内的值,默认为4 |
3. | Speed | number | Spring类型使用,弹簧速度,和springBounciness数值一起可以改变动画效果,更高的数值增加了弹簧的阻尼能力,导致更快的初始速度和更快速的反弹减速, 参考 POP 动画库 定义为[0,20]范围内的值。默认为12 |
4. | Tension | number | Spring类型使用,动态张力,可以在弹力和速度上使用,以更精细地调整动画效果 |
5. | Friction | number | Spring类型使用,动态摩擦,可以在弹力和速度上使用,以更精细地调整动画效果 |
6. | Mass | number | Spring类型使用,动态质量,同上 |
序号 | 名称 | 值 | 详述 | from&to 有效范围 | from&to赋值用法 |
---|---|---|---|---|---|
1. | Alpha | view.alpha | 透明度 | 0 - 1.0 | from(number alpha) |
2. | Color | view.backgroundColor | 背景色 | Color类型 | from(Color color) |
3. | Position | view.center | 中心点 | - | from(number x, number y) |
4. | PositionX | view.centerX | 中心点x | - | from(number x) |
5. | PositionY | view.centerY | 中心点y | - | from(number y) |
6. | Scale | view.scale | x,y方向缩放 | - | from(number x, number y) |
7. | ScaleX | view.scaleX | x方向缩放 | - | from(number x) |
8. | ScaleY | view.scaleY | y方向缩放 | - | from(number y) |
9. | Rotation | view.rotation | z轴旋转 | 0-360 | from(number begin) |
10. | RotationX | view.rotationX | x轴旋转 | 0-360 | from(number begin) |
11. | RotationY | view.rotationY | y轴旋转 | 0-360 | from(number begin) |
序号 | 构造函数 | 功能描述 | 参数描述 | 返回值 | 详述 |
---|---|---|---|---|---|
1. | AnimatorSet() | 构造方法 | - | - | - |
序号 属性名称 类型 描述 1. delay number 动画开始延迟时间 2. repeatCount number 重复次数 3. repeatForever boolean 动画是否永远重复执行 4. autoReverses boolean 动画是翻转重复 5. startBlock func(animation) 动画开始回调 6. pauseBlock func(animation) 动画暂停回调 7. resumeBlock func(animation) 动画恢复回调 8. repeatBlock func(animation, number count) 动画重复回调 9. finishBlock func(animation, boolean finish) 动画完成回调
注意: 1、如果使用AnimatorSet(无论是否设置了AnimatorSet的回调), 那么ObjectAnimation各种回调均不会调用 2、如果AnimatorSet和ObjectAnimation设置了相同的属性delay/repeatCount/repeatForever/autoReverses,则以AnimatorSet的属性为准。
序号 | 名称 | 功能描述 | 参数描述 | 返回值 | 详述 |
---|---|---|---|---|---|
1. | void start() | 开始动画 | - | - | - |
2. | void pause() | 暂停动画 | - | - | - |
3. | void resume() | 恢复动画 | - | - | - |
4. | void stop() | 强制结束动画 | - | - | - |
5. | void together(Array animations) | 并发执行动画 | - | - | - |
6. | void sequentially(Array animations) | 串行执行动画 | - | - | - |
附:支持写法如下demo:
model(userData)
colorAnim() {
type = Color,
from = Color(0xff0000),
to = Color(0x0000ff),
repeatCount = 3,
duration = 2,
delay = 0,
start = userData.animStatus.start,
pause = userData.animStatus.pause,
resume = userData.animStatus.resume,
stop = userData.animStatus.stop,
}
---
--- UI
ui {
--- layout views
Label("点我开始PositionX动画")
.padding(10, 30, 10, 30)
.bgColor(Color(0xaaaaaa))
.onClick(function()
anim = ObjectAnimation(AnimProperty.PositionX, self)
anim.duration(3).from(200).to(10)
anim.start()
end)
,
Label("点我开始Color动画")
.animation(colorAnim())
.top(60)
.padding(10, 30, 10, 30)
.bgColor(Color(0xaaaaaa))
.onClick(function()
userData.animStatus.start = true
end)
,
Label("点我暂停Color动画")
.top(30)
.padding(10, 30, 10, 30)
.bgColor(Color(0xaaaaaa))
.onClick(function()
userData.animStatus.start = false
userData.animStatus.pause = true
end)
}.safeArea(SafeArea.TOP)
---
--- preview
local function preview()
userData.animStatus = {
start = false,
pause = false,
resume = false,
stop = false }
end