moble 设备多指手势识别 (tap , double_tap , pinch)
function(){
elem.addEventListener('touchstart', start , false)
elem.addEventListener('touchend', end , false)
elem.addEventListener('touchmove', move , false)
var coefficient = .
var fingers
var threshold = {'dbl_tap':, 'tap':}
var start = null
,last_tap = null
function start(evt){
fingers = getFingers(evt)
start = new Date
}
function end(act ,evt){
var now = new Date
if (now - start < threshold.tap){
//tap
if (last_tap && (now - last_tap) < threshold.dbl_tap) {
#double_tap 事件
last_tap = null
}else{
#tap 事件
}
last_tap = now
}
fingers = null
}
function move(evt){
evt.preventDefault()
var end_fingers = getFingers(evt)
if ( == fingers.length && == end_fingers.length)
return pinch(fingers , end_fingers)
else if ( == fingers.length)
return drag(fingers ,end_fingers)
}
function drag(fg1 , fg2){
var d = {x: fg2[].x - fg1[].x , y:fg2[].y - fg1[].y }
#drag 事件
}
function pinch(fg1 , fg2){
var d = []
d.push( getDistance(fg1[] , fg1[]) )
d.push( getDistance(fg2[] , fg2[]) )
var scale = - (d[] - d[])/ d[] * coefficient
#缩放 scale> pinchout ;scale< pinchin
}
function getDistance(A ,B){
if (!A || !B) return
return Math.sqrt((B.x-A.x)*(B.x-A.x)+(B.y-A.y)*(B.y-A.y))
}
function getFingers(evt){
var g = []
for (var i = ; i < event.touches.length; i++) {
var t = event.touches[i]
g.push({x:t.pageX ,y :t.pageY})
}
return g
}
}
ios 上能监听到 gesturechange事件,但 android机不行 ,从QuoJS(http://quojs.tapquo.com/ )里扣出来简单支持缩放手势的部分
moble 设备多指手势识别 (tap , double_tap , pinch)的更多相关文章
- touch.js - 移动设备上的手势识别与事件库
Touch.js 是移动设备上的手势识别与事件库, 由百度云Clouda团队维护,也是在百度内部广泛使用的开发工具.Touch.js手势库专为移动设备设计.Touch.js对于网页设计师来说,是一款不 ...
- iOS七大手势识别
也没有什么好说的,方法都差不多,只要记得当你想要同时实现两个或多个手势的话,要遵守<UIGestureRecognizerDelegate>协议,闲言休叙,直接上代码: #import & ...
- ios开发——实用技术OC-Swift篇&触摸与手势识别
iOS开发学习之触摸事件和手势识别 iOS的输入事件 触摸事件 手势识别 手机摇晃 一.iOS的输入事件 触摸事件(滑动.点击) 运动事件(摇一摇.手机倾斜.行走),不需要人为参与的 远程控制 ...
- Google类VR设备知识
前言 本文所指的google类vr设备是指: 谷歌的Cardboard.三星Gear VR.暴风魔镜等这样的手机VR盒子,而并不是HTC Vive这类. 人眼立体感知能力 人的左右眼看到的东西是有差别 ...
- linux kernel 字符设备详解
有关Linux kernel 字符设备分析: 参考:http://blog.jobbole.com/86531/ 一.linux kernel 将设备分为3大类,字符设备,块设备,网络设备. 字符设备 ...
- 1.6Linux设备驱动
1.设备驱动的作用: 计算机系统的运行是软硬件共同作用的结果.如果应用程序直接访问硬件,会造成应用程序与硬件耦合度过高(了解面向对象的读者会很容易想到,降低对象与对象之间的耦合度最有效的方法是通过接口 ...
- 【转】Linux设备驱动之mmap设备操作
原文网址:http://www.cnblogs.com/geneil/archive/2011/12/08/2281222.html 1.mmap系统调用 void *mmap(void *addr, ...
- 字符设备 Vs. 块设备 Character Device Vs. Block Device
字符设备是指驱动发送/接受单个字符(例如字节)的设备. 块设备是指驱动发送/接受整块数据(例如512个字节为一个块)的设备. 常见的字符设备:串口,并口,声卡. 常见的块设备:硬盘(最小读取单位为扇区 ...
- 乾坤合一~Linux设备驱动之USB主机和设备驱动
如果不能陪你到最后 是否后悔当初我们牵手 如果当初没能遇见你 现在的我 在哪里逗留 所有的爱都是冒险 那就心甘情愿 等待我们一生中 所有悬念 我一往情深的恋人 她是我的爱人 她给我的爱就像是 带着露水 ...
随机推荐
- linux内核(三)文件系统
1.为什么需要根文件系统 (1)init进程的应用程序在根文件系统上(2)根文件系统提供了根目录/(3)内核启动后的应用层配置(etc目录)在根文件系统上.几乎可以认为:发行版=内核+rootfs(4 ...
- 面试书上一些题目的整理:O(n)复杂度排序年龄 & 青蛙跳台阶
可以按照年龄的个数,设置99个桶,然后桶内处理. 青蛙跳台阶,每次1阶或者2阶,就是fib数 如果每次1到n阶,那么归纳法可得,是2^(n-1) 另外1*2 覆盖 2*n个矩阵的问题,仍然是Fib数. ...
- Revolution Platform
Revolution Platform 黑暗的极权统治现实 异类的处境 独孤的存在 觉者的形成 信仰的确立 信仰的产物 完整的思想理论 反抗与信仰的一致 反抗的超理性的智慧论 反抗的纯理性的方法论 反 ...
- ubuntu中taglist和ctags安装,简单明了
1.使用命令安装ctags: sudo apt-get install ctags 2.安装taglist 下载: http://vim.sourceforge.net/scripts/downloa ...
- Python爬糗百热门20条并邮件分发+wxPython简易GUI+py2app转成可运行文件
学了一阵子Python,拿来做个什么有意思的东西呢?爬糗百好了.爬到的内容,邮件分发出去. 然后又啃了两天的wxpython,做了个简易的邮件管理界面,能够在这里添加或者删除邮件,而且一键爬虫发送. ...
- iOS开发- 生成/解析.vcf文件
vcf, 通讯录导出的一种格式. 一.生成vcf文件 假设要把我们iPhone通讯录里的数据, 生成vcf格式文件. 我们能够借助iCloud. 小技巧:通过iCloud导出iPhone通讯录的方法 ...
- JS 控制checkbox 获取 全选 全不选 一行不选择全选则不被选择 所有选择全选被选择
//点击全选button的事件操作 function selectAll(){ var allcheckBoxs=document.getElementsByName("iTo") ...
- jquery 函数的定义
var ss_login = { ptjy : function(method) { CloseAlert(); if( getLocalData("ActivePTJYUser" ...
- Testbench的编写
Testbench的作用,在于给我们编写的可综合代码的模块送入激励.即在我们波形仿真中用编写testbench来代替拖拽波形.其中还包括了我们硬件仿真与matlab仿真的联调建立(将matlab产生的 ...
- pgsql数据库备份还原记
今天又搞了一个pgsql 的备份还原,差一点没有成功,以前总是想当然的用,没认真想背后的东西,也没对过程中的疑问做记录,所以后面也没什么印象,常见常新,这次既然又遇到就总结一下. 之前操作pgsql数 ...