动画简介
现阶段,动画支持位移动画、缩放动画、旋转动画、透明度动画、背景色动画、宽度动画、高度动画。
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 动画对象可参考基础动画、关键帧动画、次序动画的实现。
