小程序
小游戏
企业微信
微信支付
扫描小程序码分享
想做一个监听比如30秒内摇一摇次数的。用官方的接口改怎么设置??
13 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
@永恒君 大佬、我怎么获得摇动的次数???
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
谢...谢谢...大佬!
// 摇一摇公共方法
function
Shake(fn, sensitive, timeGap) {
var
lastTime =
new
Date();
lastX =
null
, lastY =
, lastZ =
;
sensitive = sensitive || 50;
// 所需力度,xyz偏移值
timeGap = timeGap || 200;
// 两次之间时间间隔
isActive =
true
wx.onAccelerometerChange(
(res) {
if
(!isActive)
return
// res = res.accelerationIncludingGravity;
currentTime;
timeDifference;
deltaX = 0, deltaY = 0, deltaZ = 0;
((lastX ===
) && (lastY ===
) && (lastZ ===
)) {
lastX = res.x; lastY = res.y; lastZ = res.z;
}
deltaX = Math.abs(lastX - res.x) * 100;
deltaY = Math.abs(lastY - res.y) * 100;
deltaZ = Math.abs(lastZ - res.z) * 100;
(((deltaX > sensitive) && (deltaY > sensitive)) ||
((deltaX > sensitive) && (deltaZ > sensitive)) ||
((deltaY > sensitive) && (deltaZ > sensitive))) {
currentTime =
timeDifference = currentTime.getTime() - lastTime.getTime();
(timeDifference > timeGap) {
fn && fn(timeDifference);
});
{
stop:
() {
false
wx.stopAccelerometer();
// 实际使用
Page({
startShake:
this
.shake = Shake(() => {
// something
},
stopShake:
.shake &&
.shake.stop();
})
主要是 wx.onAccelerometerChange 这个,其他和 HTML 没太多区别。
可以在 startShake 的地方开启计时,something 的地方进行计数,计时结束再 stopShake。
正在加载...
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
@永恒君 大佬、我怎么获得摇动的次数???
谢...谢谢...大佬!
// 摇一摇公共方法
function
Shake(fn, sensitive, timeGap) {
var
lastTime =
new
Date();
var
lastX =
null
, lastY =
null
, lastZ =
null
;
var
sensitive = sensitive || 50;
// 所需力度,xyz偏移值
var
timeGap = timeGap || 200;
// 两次之间时间间隔
var
isActive =
true
;
wx.onAccelerometerChange(
function
(res) {
if
(!isActive)
return
;
// res = res.accelerationIncludingGravity;
var
currentTime;
var
timeDifference;
var
deltaX = 0, deltaY = 0, deltaZ = 0;
if
((lastX ===
null
) && (lastY ===
null
) && (lastZ ===
null
)) {
lastX = res.x; lastY = res.y; lastZ = res.z;
return
;
}
deltaX = Math.abs(lastX - res.x) * 100;
deltaY = Math.abs(lastY - res.y) * 100;
deltaZ = Math.abs(lastZ - res.z) * 100;
if
(((deltaX > sensitive) && (deltaY > sensitive)) ||
((deltaX > sensitive) && (deltaZ > sensitive)) ||
((deltaY > sensitive) && (deltaZ > sensitive))) {
currentTime =
new
Date();
timeDifference = currentTime.getTime() - lastTime.getTime();
if
(timeDifference > timeGap) {
fn && fn(timeDifference);
lastTime =
new
Date();
}
}
lastX = res.x; lastY = res.y; lastZ = res.z;
});
return
{
stop:
function
() {
isActive =
false
;
wx.stopAccelerometer();
}
}
}
// 实际使用
Page({
startShake:
function
() {
this
.shake = Shake(() => {
// something
});
},
stopShake:
function
() {
this
.shake &&
this
.shake.stop();
},
})
主要是 wx.onAccelerometerChange 这个,其他和 HTML 没太多区别。
可以在 startShake 的地方开启计时,something 的地方进行计数,计时结束再 stopShake。