hammer 手势库学习

hammer

pan 拖拽手势

tap轻击

gesture 手势

touch 触摸

网址

http://hammerjs.github.io/jsdoc/manager.js.html

http://hammerjs.github.io/getting-started/

Manager原始方式

使用Manager创建,Manager实例本身不带任何识别对象,都需手动增加

属于事件绑定的基础方法,[直接快速方式]也是根据这个来的

举例:创建一个轻击4次事件,此为自定义分支

event事件名称,可任意起,可不给(不给将直接配置修改此识别器)

taps指定次数

此处例子属于自定义tap(轻击)事件

var mc = new Hammer.Manager(d1);

//增加识别对象

mc.add(new Hammer.Tap({ event: ‘quadrupletap‘, taps: 4 }));

mc.on(‘quadrupletap‘, function (ev) {

d1.innerHTML = (new Date()).getTime();

});

[取]识别对象

如果识别对象不存在,即没被添加,将取不到,返回null

mc.get(‘pan‘);

[增]识别对象

参数

不带参,将创建包含分支再内的所有分支

带参,指定event将创建新的识别,不指定event将修改所有系统识别

add方法,返回当前增加的对象

mc.add(new Hammer.Tap({ event: ‘quadrupletap‘, taps: 4 }));

某元素可以有多个识别,同类的不同类的都行,同类指 比如都是Tab类

直接快速方式

本质:根据manager扩展而来

var mc = new Hammer(d1);

mc.on("swipe", function (ev) {

d1.textContent = ev.type + " gesture detected.";

});

同时绑定多个

mc.on("panleft panright tap press", function(ev) {

myElement.textContent = ev.type +" gesture detected.";

});

拖拽 pan


Option


Default


Description


event


pan


Name of the event.


pointers


1


Required pointers. 0 for all pointers.


threshold


10


Minimal pan distance required before recognizing.


direction


DIRECTION_ALL


Direction of the panning.

所有事件

pan, 包含下面的所有分支

panstart

panmove

panend

pancancel

panleft

panright

panup

pandown

缩放pinch


Option


Default


Description


event


pinch


Name of the event.


pointers


2


Required pointers, with a minimal of 2.


threshold


0


Minimal scale before recognizing.

所有事件

pinch, 包含下面的所有分支

pinchstart

pinchmove

pinchend

pinchcancel

pinchin

pinchout

事件关键 返回值

event.scale

长按 press


Option


Default


Description


event


press


Name of the event.


pointers


1


Required pointers.


threshold


5


Minimal movement that is allowed while pressing.


time


500


Minimal press time in ms.

Events

press

滑动 swipe


Option


Default


Description


event


swipe


Name of the event.


pointers


1


Required pointers.


threshold


10


Minimal distance required before recognizing.


direction


DIRECTION_ALL


Direction of the panning.


velocity


0.65


Minimal velocity required before recognizing, unit is in px per ms.

Events

swipe, together with all of below

swipeleft

swiperight

swipeup

swipedown

轻击 tap


Option


Default


Description


event


tap


Name of the event.


pointers


1


Required pointers.


taps


1


Amount of taps required.


interval


300


Maximum time in ms between multiple taps.


time


250


Maximum press time in ms.


threshold


2


While doing a tap some small movement is allowed.


posThreshold


10


The maximum position difference between multiple taps.

Events

tap

hammer.input

你进行的任何动作都将触发

事件关键 返回值

ev.isFinal全部动作结束后为true,即所有事件最后一次调用为true

recognizeWith

识别对象的方法

为指定识别对象增加一个识别机会

比如下例,在rotate事件执行时,如果pinch结束,会不断的识别是否满足pinch情况,满足则重新开始pinch

var pinch = new Hammer.Pinch();

var rotate = new Hammer.Rotation();

pinch.recognizeWith(rotate);

on注册事件

事件触发顺序跟事件注册先后有关,先注册将先触发

时间: 2024-10-17 03:03:58

hammer 手势库学习的相关文章

移动端手势库hammerJS 2.0.4官方文档翻译

hammerJS是一个优秀的.轻量级的触屏设备手势库,现在已经更新到2.04版本,跟1.0版本有点天壤地别了,毕竟改写了事件名并新增了许多方法,允许同时监听多个手势.自定义识别器,也可以识别滑动方向. 不过对于新版本的hammerJS却及其匮乏中文指引文档,就着这一点我还是上官网翻译下英文文档,写一篇跟大家分享吧(其实hammer的API写的很不怎样,内容和排版都很马虎了事,建议先仔细研究examples后再查阅.你也可以通过Aaron猪肉荣的Hammer系列文章来学习). 注:本文将所有API

实现一个javascript手势库 -- base-gesture.js

现在移动端这么普及呢,我们在手机上可以操作更多了.对于网页来说实现一些丰富的操作感觉也是非常有必要的,对吧(如果你仅仅需要click,,那就当我没说咯...)~~比如实现上下,左右滑动,点击之类的,加上这些东西就感觉网页会库不少呢~~(舒服).当然啦.原生javascript并没有为我们提供这些花里胡哨的东西,需要我们自己去实现下喽.又当然,,现在还是有许多js手势库的,比如hammer.js之类的.但是,学习是一个重复造轮子的过程(不知道那位伟人所多,如果无人认领,那就是我说的~~~~~~~~

移动端手势库hammerJS 2.0.4官方文档翻译(转)

hammerJS是一个优秀的.轻量级的触屏设备手势库,现在已经更新到2.04版本,跟1.0版本有点天壤地别了,毕竟改写了事件名并新增了许多方法,允许同时监听多个手势.自定义识别器,也可以识别滑动方向. 不过对于新版本的hammerJS却及其匮乏中文指引文档,就着这一点我还是上官网翻译下英文文档,写一篇跟大家分享吧(其实hammer的API写的很不怎样,内容和排版都很马虎了事,建议先仔细研究examples后再查阅.你也可以通过Aaron猪肉荣的Hammer系列文章来学习). 注:本文将所有API

【python标准库学习】thread,threading(二)多线程同步

继上一篇介绍了python的多线程和基本用法.也说到了python中多线程中的同步锁,这篇就来看看python中的多线程同步问题. 有时候很多个线程同时对一个资源进行修改,这个时候就容易发生错误,看看这个最简单的程序: import thread, time count = 0 def addCount(): global count for i in range(100000): count += 1 for i in range(10): thread.start_new_thread(ad

【python标准库学习】thread,threading(一)多线程的介绍和使用

在单个程序中我们经常用多线程来处理不同的工作,尤其是有的工作需要等,那么我们会新建一个线程去等然后执行某些操作,当做完事后线程退出被回收.当一个程序运行时,就会有一个进程被系统所创建,同时也会有一个线程运行,这个线程就是主线程main,在主线程中所创建的新的线程都是子线程,子线程通常都是做一些辅助的事.python中提供了thread和threading两个模块来支持多线程. python中使用线程有两种方式,第一种是用thread模块的start_new_thread函数,另一种是用threa

强悍的javascript手势库

/** * Toucher * git:https://github.com/cometwo/Toucher-1 */ "use strict"; (function (root, factory) { if (typeof define === "function" && define.amd) { define([], function () { return factory(root); }); } else { root.Toucher =

0806------Linux网络编程----------Echo 网络库 学习笔记

1.Echo网络库的编写 1.1 Echo网络库1.0 1.1.1 Echo网络库 1.0 框架分析 a)class InetAddress: 主要用来定义一个struct sockaddr_in 结构(用自定义端口号初始化),并提供获取这个结构体成员如IP.Port等的接口: b)class Socket : 主要用来把一个普通的 sockfd 变为 listenfd(这里用一个sockfd初始化对象),提供bind .listen.accept 等接口. c)class TcpConnect

c++ boost库学习三:实用工具

noncopyable 大家都知道定义一个空类的时候,它实际包含了构造函数,拷贝构造函数,赋值操作符和析构函数等. 这样就很容易产生一个问题,就是当用户调用A a(“^_^") 或者A c="^_^" 时会发生一些意想不到的行为,所以很多时候我们需要禁用这样的用法. 一种方法就是把拷贝构造函数和赋值操作符显式的定义为private,但是这样需要很多代码. 于是boost库为大家提供了一个简单的方法:只需要将类继承于noncopyable就可以了. #include "

C++标准模板库学习。。。

作为C++标准库相当重要的一部分,STL库提供一系列组件操作.它主要可以分为容器.迭代器.基本算法.函数对象以及内存分配器和配接器六个部分.整个STL库的代码都采用模板函数以及模板类的方式实现,具有高度的通用性.对于传统的应用程序来讲,模板库支持并且倡导一种新的编程风格,即称为泛型编程思想,以通用的模板方式来编写应用程序中的数据结构与算法. 16.1  STL常见容器 C++标准STL库中封装实现了常见数据结构,并以容器的方式提供给用户使用.STL容器主要包含vector向量.deque队列.l