微信提供的震动API只有两个:
vibrateShort
vibrateLong
short只有15ms,但在实测当中,这个方法很不灵,社区里一堆这样的问题,腾讯官方永远只有一句:提供下代码片段.....,我有一句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不灵的问题!
实际效果:
unity使用协程FixedUpdate实现
666