亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

JavaScript虛擬搖桿實踐

標簽:
JavaScript

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

先看一下实践Demo效果:

webp

Untitled.gif

  1. 介绍一下#

    options在这个实践的Demo中只用到  zonecolorsizemodeposition,下面对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一直获取angledistance。通过简单的封装,使初始化一个虚拟摇杆更简单:

    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


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會

舉報

0/150
提交
取消