动画简介
现阶段,动画支持位移动画、缩放动画、旋转动画、透明度动画、背景色动画、宽度动画、高度动画。
Hummer 动画支持两种动画方式,分别为 Basic Animation
Frame Animation
,为了满足写次序动画的需求,Tenon 侧增加了 Step Animation
。
Tenon 的动画,是通过动画对象描述的,主要分为三种动画对象:
动画
具体的动画样式细节,可以参考 Animation Style Object
描述。
Animation Style Object
属性名 | 介绍 | 类型 | 备注 | 示例 |
---|---|---|---|---|
position | 位移动画 | Object <PositionObject> | PositionObject 可见以下表格 | position: {x: '100hm', y: 0} |
scale | 缩放动画 | Number | x轴和y轴同时变化 | scale: 1.1 |
scaleX | 缩放动画(x轴) | Number | 仅x轴变化 | scaleX: 1.1 |
scaleY | 缩放动画(y轴) | Number | 仅y轴变化 | scale: 1.1 |
rotationX | 旋转动画(x轴) | Number | 绕x轴旋转(单位:度) | rotationX: 90 |
rotationY | 旋转动画(y轴) | Number | 绕y轴旋转(单位:度) | rotationY: 90 |
rotationZ | 旋转动画(z轴) | Number | 绕z轴旋转(单位:度) | rotationY: 90 |
opacity | 透明度动画 | Number | 透明度变化,取值 0到1(0-全透明,1-不透明) | opacity: 0.8 |
backgroundColor | 背景色动画 | Color | 背景色变化 | backgroundColor: #ff00ff |
width | 宽度动画 | Length | 宽度变化 | width: 100hm |
height | 高度动画 | Length | 高度变化 | height: 100hm |
Length 长度单位,具体可参考 CSS单位
Position Object
属性名 | 介绍 | 类型 | 备注 |
---|---|---|---|
x | x轴位移 | string | number | 支持 hm、rem单位 |
y | y轴位移 | string | number | 支持 hm、rem单位 |
用法
Tenon Vue
Tenon Vue 中动画通过 v-animation
指令来实现,将动画对象传递给 v-animation
指令即可。
例如: <view v-animation="animationObject"></view>
TIP
动画对象可参考基础动画、关键帧动画、次序动画的实现。
用法
Tenon React
Tenon React 支持两种动画方式,分别是属性传递和Hook的方式。
Plan1. 属性传递
Tenon React 中动画通过 animation属性来实现,将动画对象传递给 animation属性即可。 例如: <view animation={animationObject}></view>
TIP
animationObject
动画对象可参考基础动画、关键帧动画、次序动画的实现。该方式,组件创建后会立即执行动画。
Plan2. useAnimation Hook
通过useAnimation
钩子,可以异步操作动画执行.
使用用例如下:
javascript
import {useAnimation} from '@hummer/tenon-react';
function SyncAnimation(){
let [animationRef, startAnimation] = useAnimation(animationObject)
return (
<>
<view class="box" ref={animationRef}></view>
<text class="btn" onTap={() => startAnimation()}>开始动画</text>
</>
)
}
animationRef
引用需要绑定到需要执行动画的视图上,startAnimation
方法控制何时开始执行动画。
TIP
animationObject
动画对象可参考基础动画、关键帧动画、次序动画的实现。