当前位置: 首页 > 文档资料 > Rax 中文文档 >

Animation

优质
小牛编辑
128浏览
2023-12-01

实现动画,通过 weex-bindingx 环境允许的前提下优先使用 bindingx,不满足环境要求则使用 universal-transition 调用Weex或浏览器或小程序提供的动画API实现。

支持

安装

$ npm install universal-animation --save

方法

animate(config, callback)

参数

成员类型描述必选默认值支持
config.propsArray详见下文描述✔️-
callbackfunction动画完成后触发-

config.props数组成员内容:

成员类型描述必选默认值支持
elementDOMNode|stringDOM 元素, 小程序环境为一个string 类型的标志符,详细见export()✔️-
propertystring动画属性,详见bindingx properties support✔️-
startvalue初始值-
endvalue结束值✔️-
durationnumber动画持续时间0
delaynumber动画延迟时间0
easingstring动画属性,详见bindingx easing supporteaseOutSine

export()

支持

 

因为小程序无法提供DOMNode,并且动画应用方式也有差异。所以小程序中使用该方法获取动画内容,然后手动绑定到元素。

参数

返回

成员类型描述
resultObject返回的对象
result[key]Arraykey 为 config.props[n].element,value 为小程序动画内容,将该值绑定到元素

示例

<View animation={animationInfo1} style={
	  background: 'red',
	  height: '100rpx',
	  width: '100rpx'
}></View>
<View animation={animationInfo2} style={
	  background: 'yellow',
	  height: '100rpx',
	  width: '100rpx'
}></View>
import animate from 'universal-animation';
import findDOMNode from 'rax-find-dom-node';
import { isMiniApp } from 'universal-env';

const animationResult = animate(
  {
    props: [
      {
        element: isMiniApp ? 'view1' : findDOMNode(this.refs.block1),
        property: 'transform.translateX',
        easing: 'easeOutSine',
        duration: 200,
        start: 0,
        end: 200,
        delay: 100,
      },
      {
        element: isMiniApp ? 'view2' : findDOMNode(this.refs.block2),
        property: 'opacity',
        easing: 'easeOutSine',
        duration: 200,
        end: 0.2,
        delay: 100,
      },
    ],
  },
  () => {
    console.log('timing end');
  },
).export();

if (isMiniApp) {
  this.setState({
    animationInfo1: animationResult.view1,
    animationInfo2: animationResult.view2,
  });
}