【问题标题】:Touch swipe coordinates using quo.js使用 quo.js 触摸滑动坐标
【发布时间】:2014-02-11 08:31:31
【问题描述】:

我正在使用 quo.js 构建一个 Web 应用程序来处理触摸事件。

当用户用一根手指滑动(拖动)时,我可以使用以下 quo.js 代码来识别这一点并应用 css 转换:

$$('element').swipe(function() {
  $('element').vendor('transform','translate(-100px,-100px)');
});

现在我想做的是根据滑动量应用翻译量。换句话说,我需要获取滑动的 X/Y 坐标。有谁知道这是否可以使用 quo.js 或者我需要使用不同的 js 库?

我试过这个来获取坐标,但它返回“未定义”:

$$('element').swipe(function(e) {
  alert(e.pageX);
});

【问题讨论】:

    标签: javascript jquery touch drag swipe


    【解决方案1】:

    quo.js 传递给回调的事件对象包含一个 currentTouch 对象,其中包含 x 和 y 坐标:http://jsfiddle.net/marionebl/UupmU/1/

    $$('selector').swipe(function(e){
      console.log('swipe');
      console.log(e.currentTouch); // Gives position when gesture is cancelled 
    });
    

    请注意,滑动事件仅在滑动手势完成时触发。据我了解您的用例,使用swiping 事件会更方便,该事件会在检测到滑动手势时以及在所有动作期间触发,直到发布:

    var $swipeable = $$('.swipeable'),
        swipeableHeight = $swipeable.height(),
        swipeableWidth = $swipeable.width();
    
    $swipeable.swiping(function(e){
       var x = e.currentTouch.x - swipeableWidth / 2;
       var y = e.currentTouch.y - swipeableHeight / 2;
    
       $swipeable
         .vendor('transform', 'translate(' + x +'px,'+ y +'px)');
    });
    

    【讨论】:

    • 如果我有能力,我会给你十亿加分。我想我在过去几个小时试图解决这个问题时脑出血。非常感谢!
    • 出于兴趣,您是如何知道 currentTouch 的?我在任何地方都找不到任何文档!
    • console.log:由于 quo.js 在桌面浏览器上工作,您可以简单地执行$el.on('event', console.log) 并在浏览器的 js 控制台中查看传递给事件处理程序的内容。我更喜欢 Chrome 开发工具(打开方式:查看 - 开发人员 - Javascript 控制台),但所有现代浏览器都有不错的调试功能。
    • 跟进:有多种调试移动网络浏览器的选项(例如 Safari 和 Chrome 远程调试)。对于一些快速而肮脏的控制台输出jsconsole.com 就足够了。
    • 啊,是的,我可以在那里看到一大堆有用的信息。但我在列表中看不到 currentTouch... 我看到了类型、时间戳、currentTarget 等内容(我在 Firefox 中使用 Firebug 控制台)。确切的信息在哪里?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多