示例 - 陀螺仪
设备方向事件监听
设 备方向deviceorientaion(陀螺仪)事件是一个高频触发的事件,我们可能需要伴随设备移动来改变某个元素的属性(位置、颜色、透明度、大小 等),本文将向您介绍如何使用 BindingX 来实现(orientation)事件的动画。如果您还不了解 BindingX 的工作原理,强烈建议先阅读文档 《简介》以及 《核心概念》。
特性介绍
要在 BindingX
中使用deviceorientation
事件动画,需要将eventType
的值设置为orientation
。在orientation
模式下,BindingX
提供了预置变量x
,y
,可以参与表达式运算,x
是alpha
、gamma
合成的代表横向位移的值,范围为(-90,90)
。y
是伴随beta
角改变的代表纵向位移的值,范围为(-90,90)
。
如何使用
下面通过一个简单的例子来介绍如何使用。假设我们要实现一个基于orientation
事件来进行元素的位置的改变。
功能分解:
1、伴随x、y分别进行translateX、translateY移动
2、translateX的值从
-90rem
至90rem
,translateY的值从-45rem
至45rem
第一步:安装BindingX
npm i weex-bindingx --save
第二步:使用Rax
编写需要动画的元素结构
import {createElement,Component,render,findDOMNode} from 'rax';
import BindingX from 'weex-bindingx';
import {isWeex} from 'universal-env';
import View from 'rax-view';
class Demo extends Component{
render(){
return (<View style={{flex:1}}>
<View ref="block" style={{
position: 'absolute',
left: 90,
top: 90,
width: 300,
height: 300,
backgroundColor: 'red'
}}>block</View>
</View>);} }
}
render(<Demo/>);
绑定orientation
事件
注:orientation场景下,无需配置anchor
componentDidMount(){
BindingX.bind({
eventType:'orientation'
});
}
第四步:给需要动画的元素添加动画效果
注:props
是用来描述需要动画的元素的属性property
,元素节点element
,表达式expression
表达式说明:x
,y
分别代表伴随alpha
、beta
、gamma
角度变化时,水平和垂直偏移量,该值的区域为(-90,90)
x从
-90
到90
,水平位移transform.translateX
也从-90rem
至90rem
,可以这么写'x+0'
y从
-90
到90
,水平位移transform.translateY
也从-45rem
至45rem
,可以这么写'y/2+0'
具体代码如下:
BindingX.bind({
eventType:'orientation', //描述事件触发类型是orientation触发
props:[ //props数组用来描述伴随orientation事件需要改变的元素节点
{
element: getEl(this.refs.block), //动画元素
property:'transform.translateX', //动画属性
expression:'x+0' //表达式
},
{
element: getEl(this.refs.block), //动画元素
property:'transform.translateY', //动画属性
expression:'y/2+0' }
]
});
//由于在web端和weex端需要传入的元素内容不同,在weex下需要传入具体的ref,而在web下需传入元素的节点(HTMLElement)
function getEl(el){
return isWeex ? findDOMNode(el).ref : findDOMNode(el);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论