收藏
回答

小程序怎么做摇一摇监测

API/组件名称 终端类型 微信版本 基础库版本
重力感应 客户端 6.6.1 1.9.2

想做一个监听比如30秒内摇一摇次数的。用官方的接口改怎么设置??

回答关注问题邀请回答
收藏

13 个回答

  • 2018-01-24

    @永恒君  大佬、我怎么获得摇动的次数???

    2018-01-24
    有用
    回复
  • 2018-01-24

    谢...谢谢...大佬!

    2018-01-24
    有用
    回复
  • 永恒君
    永恒君
    2018-01-24
    // 摇一摇公共方法
    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。

    2018-01-24
    有用
    回复

正在加载...

登录 后发表内容