Skip to content

ObjectAnimation

xuwhale6 edited this page Aug 7, 2020 · 8 revisions

ObjectAnimation

序号 构造函数 功能描述 参数描述 返回值 详述
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() 强制结束动画 - - -

Timing 枚举

序号 名称 详述
1. Default MLATimingFunctionDefault -
2. Linear MLATimingFunctionLinear -
3. EaseIn MLATimingFunctionEaseIn -
4. EaseOut MLATimingFunctionEaseOut -
5. EaseInEaseOut MLATimingFunctionEaseInEaseOut -
6. Spring MLATimingFunctionSpring -

TimingConfig 键值对

序号 名称 详述
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类型使用,动态质量,同上

AnimProperty枚举

序号 名称 详述 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)

AnimatorSet

序号 构造函数 功能描述 参数描述 返回值 详述
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
Clone this wiki locally