當前位置:
首頁 > 科技 > 開發 | 在小程序里也能搖一搖?調用介面就能做

開發 | 在小程序里也能搖一搖?調用介面就能做

開發 | 在小程序里也能搖一搖?調用介面就能做

文 | 花叔

小程序也能做搖一搖功能,但好像沒怎麼看到過有什麼小程序做?

按耐不住好奇心的花叔,在這兩天研究了一下。

在說這之前,請允許我描述一下 Nodes的新功能——個人主頁功能。因為這個功能,花叔才萌生了研究小程序搖一搖的好奇心。

開發 | 在小程序里也能搖一搖?調用介面就能做

在 Nodes 的主頁或者某個思維導圖的詳情頁里,點擊頭像會跳轉到某個人的個人主頁。

開發 | 在小程序里也能搖一搖?調用介面就能做

這個頁面主要用於顯示某個用戶已經公開的思維導圖作品(在 Nodes 的首頁可以進行思維導圖的公開操作)。

這個頁面涵蓋了三個功能:

  • 查詢或篩選該用戶已經公開的思維導圖作品。
  • 更改頭部 banner 圖(右上角有個鏈接)。
  • 根據 banner 圖生成該頁面的朋友圈分享圖(在 banner 的右下角)。

也就是說,按平常的情況而言,用戶去訪問另一個用戶的主頁,只能有兩種方式:

  • 訪問該用戶的某個思維導圖,點擊用戶的頭像
  • 掃描或識別對應的菊花碼圖片

我覺得,入口少了點。於是乎,就在思考如何增加訪問他人主頁的方式。

一開始想著做一個用戶列表頁,然後用戶通過列表訪問某個用戶的主頁。方法是可行的,但實在太懶,不想弄。

於是接下來,做了一個挺「反人類」的交互,請看演示(這可是冒著生命危險錄的):

開發 | 在小程序里也能搖一搖?調用介面就能做

沒錯,演示的頁面就是上面訪問的那個頁面。只要在個人主頁搖一搖,就會隨機出現其他用戶的主頁。

這裡用了微信小程序的兩個 API:

  • 加速度計 API,偵測手機物理狀態。
  • 音頻 API,在用戶搖晃手機的時候播放音頻。

代碼怎麼寫?

因為小程序里的加速度計 Accelerometer API 跟 web 開發的很像,唯一不一樣的是,小程序中需要主動開啟這個事件的監聽(也可以關閉)。

所以,我就在網上找一段現成的 JS 代碼,改著用就好了。

最後貼一段代碼:

//首先定義一下,全局變數
var lastTime = 0; //此變數用來記錄上次搖動的時間
var x = 0,
y = 0,
z = 0,
lastX = 0,
lastY = 0,
lastZ = 0; //此組變數分別記錄對應x、y、z三軸的數值和上次的數值
var shakeSpeed = 110; //設置閾值
//編寫搖一搖方法
function shake(acceleration) {
var nowTime = new Date.getTime; //記錄當前時間
//如果這次搖的時間距離上次搖的時間有一定間隔 才執行
if (nowTime - lastTime > 100) {
var diffTime = nowTime - lastTime; //記錄時間段
lastTime = nowTime; //記錄本次搖動時間,為下次計算搖動時間做準備
x = acceleration.x; //獲取x軸數值,x軸為垂直於北軸,向東為正
y = acceleration.y; //獲取y軸數值,y軸向正北為正
z = acceleration.z; //獲取z軸數值,z軸垂直於地面,向上為正
//計算 公式的意思是 單位時間內運動的路程,即為我們想要的速度
var speed = Math.abs(x + y + z - lastX - lastY - lastZ) / diffTime * 10000;
//console.log(speed)
if (speed > shakeSpeed) { //如果計算出來的速度超過了閾值,那麼就算作用戶成功搖一搖
wx.stopAccelerometer
self.setData({
hasInit: false,
canvas: {}
})
audioCtx.setSrc("http://123.207.0.183/application/images/s.mp3")
audioCtx.play
wx.showLoading({
title: "尋找大神中..."
})
config.request({
// 要請求的地址
url: config.service.taRan,
success(e) {
setTimeout(function {
//console.log(e.data)
audioCtx.setSrc("http://123.207.0.183/application/images/r.mp3")
audioCtx.play
self.uid = e.data
self.con = ""
self.onInitShow
}, 2000)
}
})
}
lastX = x; //賦值,為下一次計算做準備
lastY = y; //賦值,為下一次計算做準備
lastZ = z; //賦值,為下一次計算做準備
}
}
wx.onAccelerometerChange(shake)
//wx.startAccelerometer
var audioCtx = wx.createAudioContext("myAudio")

還需額外注意的是,小程序的 Audio API 只能使用網路音頻資源

原文地址:http://mp.weixin.qq.com/s/VB1-1n4Fo-3EM5o5ZXAZbA

「Nodes」小程序使用鏈接 https://minapp.com/miniapp/2629/

關注「知曉程序」公眾號,在微信後台回復「開發」,獲取小程序開發文章推薦。

開發 | 在小程序里也能搖一搖?調用介面就能做

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 愛范兒 的精彩文章:

全球首試,特斯拉 Model 3 不容錯過
HomePod 只是個音箱?它還會是音質最好的 iOS 設備
獨立遊戲成了香餑餑,阿里應用分發也說要全力支持
站住!那個在土星環上奔跑的人!
全球首試:當年錯過了 iPhone 4,特斯拉 Model 3 不容再失

TAG:愛范兒 |

您可能感興趣

空調用了這麼多年你真的會用嗎?有個模式不能隨便亂用,你知道嗎
如果爆發戰爭,我國能調用多少卡車?這個數字你肯定不信
如果爆發戰爭,我國能調用多少卡車?這個數字你不得不信
如果爆發戰爭,我國能調用多少輛卡車?簡直就是天文數字
上課也能低調用的「充電寶」,偷偷用超隱蔽,圖五女生出門必帶!
空調用久有異味?打開一看才知這麼臟,回家這樣清洗空調恢復如初
敘利亞還有多少軍隊可以調用?有望實現統一嗎?說出來你都不信
空調這個模式不要亂開,很多人用錯,難怪我空調用兩年就壞
空調用久了製冷慢?教你3個小妙招,不花錢也能讓空調快速製冷!
空調用久了就不製冷?先別著急修,聽內行人一教,頓時大悟!
空調用「除濕」,還是「製冷」好?模式用錯了,費電多還易壞空調
小心你的白襯衫!空調用久了究竟有多臟?
一家三口開空調睡了整晚,醒來全都病倒,你家空調用對了嗎?
原來多做這一步,中央空調用著效果最好!還好我家裝得早,沒吃虧
空調用錯一身病!你以為吹個風就那麼簡單?
小米有品又上神器,浴霸還能當空調用?
一旦爆發戰爭,我國能調用到多少卡車?數目龐大,令人意外
空調用久了,製冷效果越來越差,只要一招,製冷效果好還省電
空調用久了就不製冷?教你一招,空調立馬冰力十足
空調用久了不製冷怎麼辦?