Hammer.js源码解析(2) - Manager类

Manager类

Manager类是用来管理Hammer.js中所有的数据的
首先我们来看Manager类的属性和方法
Hammer.js源码解析(2) - Manager类

属性:

  1. session:顾明思议,用于保存一些全局使用的数据
  2. element:需要绑定手势事件的dom元素
  3. options:也是初始化Hammer需要的配置
  4. handlers:保存所有的手势绑定事件,用于成功识别手势后触发
  5. recognizers:保存所有的手势,可以在options.recognizers或直接使用默认

关于session的属性,其中,

Hammer.js源码解析(2) - Manager类

(1) stoped, curRecognizer用在Manager.recognize()方法中
(2) preInput, firstInput, firstMultiple, offsetDelta, prevDelta用于对原生触摸事件的处理
(3) lastInterval, prevented用于TouchAction()方法之中

方法:

  1. set(options):用于重置初始化的options
  2. stop(force):设置 session.force 属性,可以关闭手势触发
  3. recognize(inputData):参数为经过处理的手势数据,循环 session.recognizers 去触发每个 recognizerrecognizer.recognize(inputData) 事件
  4. get(recognizerName):通过 recognizer.options.name 去查看到对应的 recognizer
  5. add(recognizer):添加手势,如果之前有相同事件的手势,会把之前的手势给移除
  6. remove(recognizer):移除掉某个手势,移除成功之后会调用manager.touchAction.update()方法
  7. on(events, handler):添加手势事件,就是将 event:[handler1, handler2, ...] 的方式在session.handlers
  8. off(events, handler):移除手势事件,如果event对应只有一个handler,直接delete session.handlers[event], 否则从session.handlers[event]数组中除去handler元素
  9. emit(event, data):触发手势事件,通常都是 Manager.recognize() -> recognizer.recognize() -> manager.emit() 的流程
  10. destory():销毁整个手势相关的数据,并还原之前元素的样式

manage.js中还附带了两个单独的方法

  1. toggleCssProps(manager, add):方法用于为 element 设置手势运动需要的css,已经销毁时将之前的style还原
  2. triggerDomEvent():用于触发绑定在 element 上的原生事件

相关推荐