小程序加速度計(jì)api一共就三個(gè)方法。
1、wx.onAccelerometerChange(CALLBACK) 監(jiān)聽(tīng)加速度數(shù)據(jù),頻率:5次/秒,接口調(diào)用后會(huì)自動(dòng)開(kāi)始監(jiān)聽(tīng),每調(diào)用一次就會(huì)注冊(cè)一個(gè)。
2、wx.startAccelerometer(OBJECT) 開(kāi)始監(jiān)聽(tīng)方法
坑來(lái)了。。。沒(méi)錯(cuò)就是第三方法
3、wx.stopAccelerometer(OBJECT) 停止監(jiān)聽(tīng),這個(gè)方法是停止了監(jiān)聽(tīng),再晃動(dòng)手機(jī)不會(huì)走回調(diào)方法了,但是它并不移除監(jiān)聽(tīng)
那么問(wèn)題來(lái)了,在某個(gè)頁(yè)面每調(diào)用一次第一個(gè)api它就會(huì)注冊(cè)一個(gè)監(jiān)聽(tīng),第三個(gè)api并不能移除掉監(jiān)聽(tīng),導(dǎo)致你再次開(kāi)啟的時(shí)候就會(huì)有多個(gè)回調(diào)方法在同時(shí)進(jìn)行。就會(huì)出現(xiàn)問(wèn)題。那么怎么避免呢?
解決方法:在微信小程序啟動(dòng)的時(shí)候就調(diào)用監(jiān)聽(tīng)方法,在回到方法中通過(guò)pages能夠獲取到當(dāng)前的頁(yè)面,在當(dāng)前頁(yè)面調(diào)用你想回調(diào)的方法就好了。
onLaunch: function () {
????wx.onAccelerometerChange((e) => {
? ? ? ?var pages = getCurrentPages()var currentPage = pages[pages.length - 1]
? ? ? ?if (currentPage.onAccelerometerChange) {
? ? ? ? ? currentPage.onAccelerometerChange(e)
? ? ? ?}
? ? })
}
之后就可以在當(dāng)前頁(yè)面中的onAccelerometerChange(e)方法做你想做的事情了