摇一摇一直是微信经典的小功能。具体效果为:如果摇一摇成功,那么播放一段音频,并将摇一摇次数累加1.注意,此功能需要真机支持,在模拟器中无法正常运行。当然,次数加1只是一个示例,你可以实现自己的业务逻辑。摇一摇的具体实现原理为:利用手机的重力感应机制监听手机摇晃幅度。如果手机摇晃幅度超过一定偏移量就认为摇一摇成功,可以执行具体业务;如果手机摇晃幅度不大就认为不是摇一摇。MINA框架提供的重力感应监听函数为wx.onAccelerometerChange(CALLBACK)。CALLBACK回调函数中将可以获得重力感应在x、y、z轴上的值。首先要在setting.wxml中添加一个modal组件用来显示摇一摇的次数。
再编写摇一摇的具体实现代码。在setting.js中增加一个shake函数,代码如下:
以上代码中调用了3个方法:gravityModalConfirm方法用来显示、隐藏摇一摇技术面板以及开启和停用摇一摇功能;getDelFlag方法用来计算摇一摇的偏移量;playShakeAudio方法是在摇一摇成功后播放音频并计数。
以上代码是摇一摇的功能代码。晃动手机后,首先响起“咔嚓”声,随后技术面板的数字将增加1.请注意,声音文件位于我们提供的一个外网文件,你可以替换成自己的声音文件。