做微信小遊戲開發也有段時間了,小遊戲非常注重手感,精美的界面,順滑的操作,有時微微一震,會給玩家帶來不一樣的感覺。
這裏就要說到微信小遊戲中的震動API接口了,微信官方提供的震動接口有兩個:
wx.vibrateShort(Object object)
使手機發生較短時間的振動(15 ms)。僅在 iPhone 7 / 7 Plus
以上及 Android 機型生效
wx.vibrateLong(Object object)
使手機發生較長時間的振動(400 ms)
只有兩個!而我在開發時,發現vibrateShort這個接口基本沒感覺,或說基本沒作用,開發社區裏也是一堆這樣的問題,騰訊官方永遠只有一句:提供下代碼片段.....,我有一句xxxx不知當講不當講。
long有400ms,這個震動有點強,突然來一下,可能會嚇到用戶,我想要震動50ms,不好意思,暫不支持!只好另想辦法。
有一個折中方案:50ms=15ms+15ms+15ms,也就是三次短震動,用一個定時器去連續震動三次就差不多達到效果了!
引擎:Laya
編輯器:LayaAir IDE
語言:TS
代碼:
/**
* 震動時間
* @param time 毫秒數
*/
function vibrate(time: number) {
let count = time / 15;
let index = 0;
let obj = { count: count, index: index };
Laya.timer.loop(16, obj, function () {
wx.vibrateShort();
index++;
if (index > count) {
Laya.timer.clearAll(obj);
}
});
}
JS代碼:
/**
* 震動時間
* @param time 毫秒數
*/
function vibrate(time){
let count=time/15;
let index=0;
let interval=setInterval(function(){
wx.vibrateShort();
index++;
if(index>count){
clearTimeout(interval);
interval=null;
}
},15);
嗯,效果還不錯!順便解決了vibrateShort不靈的問題!
實際效果: