栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

JavaScript虚拟摇杆实践

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript虚拟摇杆实践

6~7月的一个小任务是实现一个虚拟摇杆控制无人机,在github搜一下发现有一个# nipplejs,用它可以快速的实现一个虚拟摇杆的功能。

先看一下实践Demo效果:

Untitled.gif

  1. 介绍一下# nipplejs使用(详情介绍请看文档)

-----

options在这个实践的Demo中只用到  zone、color、size、mode、position,下面对nipplejs进行简单的封装,取名叫Joystick:

function Joystick(opt) {  if (!opt.zone) return;  var disabledColor = opt && opt.disabledColor || true;  this.options = {    mode: opt && opt.mode || 'static',    size: opt && opt.size || 300,    // color在nipplejs中是设置backgroundColor,为了让我们样式不被覆盖。所以设置一个让background-color不成功的值
    color: disabledColor ? 'ddd' : (opt && opt.color || '#eee'),    position: opt && opt.position || {      left: '50%',      top: '50%'
    },    zone: opt && opt.zone
  };  this.distance = 0;  this.angle = null;  this.time = null;
}

Joystick.prototype.init = function() {  var manager = nipplejs.create(this.options);  this.manager = manager;  this._on();  return this;
}

Joystick.prototype._on = function() {  var me = this;  this.manager
    .on('start', function (evt, data) {
      me.time = setInterval(() => {
        me.onStart && me.onStart(me.distance,me.angle);
      }, 100);
    })
    .on('move', function (evt, data) {      // direction有不存在的情况 
      if (data.direction) {
        me.angle = data.direction.angle;
        me.distance = data.distance;
      }
    })
    .on('end', function (evt, data) {
      clearInterval(me.time);
      me.onEnd && me.onEnd();
    });
}

使用nipplejs,当distance到最大值就不会触发move事件,但我希望开始使用摇杆到松开都之前都能获取angle和distance。于是就在start中通过setInterval一直获取angle和distance。通过简单的封装,使初始化一个虚拟摇杆更简单:

function select(val) {  return document.querySelector(val);
}new Joystick({  zone: select('#left')
})
.init()
.onStart = function(distance, angle) {  console.log('Left:无人机向 => ' + angle + '移动' + distance + '个单位');
}



作者:内孤
链接:https://www.jianshu.com/p/d3a22a02cf02


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/245977.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号