ek.createAnimation
支持 Promise
功能描述
创建一个动画实例 Animation,调用实例的方法来描述动画,最后通过动画实例的 export 方法导出动画数据传递给组件的 animation 属性。
本接口封装的 CSS 动画,如果没有连续执行多个动画的需求,可以直接使用 CSS 动画,性能会更好,也更简单。
参数
参数 | 类型 | 默认值 | 必填 | 说明 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
duration | number | 400 | 否 | 动画持续时间,单位 ms | |||||||||||||||||
timingFunction | string | linear | 否 | 动画的效果 | |||||||||||||||||
| |||||||||||||||||||||
delay | number | 0 | 否 | 动画延迟时间,单位 ms | |||||||||||||||||
success | function | 否 | 接口调用成功的回调函数 | ||||||||||||||||||
fail | function | 否 | 接口调用失败的回调函数 | ||||||||||||||||||
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
返回值
Example
vue
<template>
<view :animation="animationData" style="background:red; height:100px; width:100px">box</view>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { usePage } from 'evoker'
const { onShow } = usePage()
const animation = ek.createAnimation({
duration: 1000,
timingFunction: 'ease'
})
const animationData = ref(null)
onShow(() => {
// 旋转同时放大
animation
.scale(2, 2)
.rotate(45)
.step()
animationData.value = animation.export()
setTimeout(() => {
// 先旋转后放大
animation.rotate(0).step()
animation.scale(1, 1).step()
animationData.value = animation.export()
}, 1000)
})
</script>