摇晃手机事件
点击或者摇晃手机,变脸
<!--pages/index.wxml--> <view class='box'> <view class='title'>变脸游戏</view> <view> <image src="{{imgArr[index]}}" bindtap="changeFace" mode='widthFix'></image> </view> </view>
bindtap="changeFace", 宽度全部显示,高度自由显示,保持纵横比
/* pages/index.wxss */ image { margin: 10px; }
margin: 10px; 边距,上下左右十个像素
// pages/index.js function createRandomIndex() { //定义产生随机数的全局函数 return Math.floor(Math.random() * 10); //产生0—9之间的随机整数,用作数组的下标 } Page({ data: { index: 0, //初始化脸谱图片数组下标为0 imgArr: [ //脸谱图片数组,存放的图片的路径 '../images/01.jpg', '../images/02.jpg', '../images/03.jpg', '../images/04.jpg', '../images/05.jpg', '../images/06.jpg', '../images/07.jpg', '../images/08.jpg', '../images/09.jpg', '../images/10.jpg', ], }, changeFace: function() { //点击脸谱图片事件函数 this.setData({ index: createRandomIndex() //调用全局函数产生随机数,设置下标为0-9之之间的随机数,随机数产生以后直接渲染到index.wxml文件中,index.wxml文件中的index的值就有了,再去调用imgArr,根据下标确定哪一个图片,然后显示出来 }) }, onShow: function() { //生命周期函数,界面显示时调用 var that = this;//该函数中涉及了回调函数,回调函数中要使用this的时候,就可能使当前对象发生转移,会出现错误,因此只要涉及到回调函数,一般都要把this赋值 给一个定义的变量 wx.onAccelerometerChange(function(res) { //加速度变化监听函数,用于监听手机晃动,只有一个参数,即一个回调函数,该回调函数能够通过res监测我们手机晃动的加速度的大小,手机一晃动监听到了,那么手机加速度的信息就存储在res里面,存储以后就可以进行判断了 if (res.x > 0.5 || res.y > 0.5 || res.z > 0.5) { //设置加速度在某个坐标轴方向达到的数值,手机随便一动,都会产生加速度,不限制值的话,没法观察界面变化的情况,效果就不好了,我们加速度的变化一般都在0-1之间,因此设置0.5,效果还是比较适合的 wx.showToast({ //消息提示框函数 title: '摇一摇成功', //消息框标题 icon: 'success', //消息框图标 duration: 2000 //消息框显示的时间 }) that.changeFace() //调用函数进行变脸,显示一个随机的脸谱图片 } }) } })
Math.random() * 10 得到0-9之间的一个随机数
Math.floor(Math.random() * 10); 取地板,得到0-9之间的一个整数
与摇晃手机事件有关的API函数包括:
wx.onAccelerometerChange(function callback)
wx.startAccelerometer(Object object)
wx.stopAccelerometer(Object object)
wx.onAccelerometerChange(function callback) 用于监听加速度变化事件,其参数为加速度变化事件的回调函数, 该回调函数的参数是对象类型(Object )的res,res的属性如下表所示。
xyz分别表示加速度在x轴y轴和z轴的值
wx.startAccelerometer(Object object) 用于启动监听加速度变化事件。其参数属性如下表所示。
interval监听onAccelerometerChange函数的变化频率
wx.stopAccelerometer(Object object) 用于停止监 听加速度变化事件。