5.触摸屏和移动设备事件

5.触摸屏和移动设备事件

介绍运行在Apple的iphone和ipad设备上的Safari所产生的手势和触摸事件,还包括用户旋转这些设备时锁产生的orientationchange事件。---横屏竖屏转换触发,window对象的orientation属性给出当前方位,0,90,180,-90.

1) 

手势开始:gesturestart

手势结束:gestureend。

在这两个事件之间是跟踪手势过程的gesturechange事件队列。

传递事件对象的数字属性scale和rotation.

scale:两个手指之间当前距离和初始距离的比值。<1.0........>1.0;

rotation:从事件开始手指旋转的角度,以度为单位,正值是顺时针方向。

2) 

 手指触摸 : touchstart

手指移动:touchmove,

手指离开:touchend ,

事件对象有 changedTouches属性。类数组对象,都描述触摸的位置。

而每个触摸事件都包括了三个触摸列表,每个列表里包含了对应的一系列触摸点(用来实现多点触控):

touches:当前位于屏幕上的所有手指的列表。

targetTouches:位于当前DOM元素上手指的列表。

changedTouches:涉及当前事件手指的列表。

每个触摸点由包含了如下触摸信息(常用):

identifier:一个数值,唯一标识触摸会话(touch session)中的当前手指。一般为从0开始的流水号(android4.1,uc)

target:DOM元素,是动作所针对的目标。

pageX/pageX/clientX/clientY/screenX/screenY一个数值,动作在屏幕上发生的位置(page包含滚动距离,client不包含滚动距离,screen则以屏幕为基准)。 

radiusX/radiusY/rotationAngle:画出大约相当于手指形状的椭圆形,分别为椭圆形的两个半径和旋转角度。

/*单指拖动*/ var obj = document.getElementById('id'); 
obj.addEventListener('touchmove', function(event) {     
 // 如果这个元素的位置内只有一个手指的话    
 if (event.targetTouches.length == 1) {
     event.preventDefault();// 阻止浏览器默认事件,重要  
         var touch = event.targetTouches[0];         // 把元素放在手指所在的位置        
         obj.style.left = touch.pageX-50 + 'px';    
         obj.style.top = touch.pageY-50 + 'px';     
 } }, false); 

 

3)、重力感应重力感应较简单,只需要为body节点添加onorientationchange事件即可。在此事件中由window.orientation属性得到代表当前手机方向的数值。window.orientation的值列表如下:
0:与页面首次加载时的方向一致
-90:相对原始方向顺时针转了90°
180:转了180°

90:逆时针转了90°据我测试,Android2.1尚未支持重力感应。以上即目前的触屏事件,这些事件尚未并入标准,但已被广泛使用。本人Android2.1,未在其他环境下测试。

原文地址:https://www.cnblogs.com/rainbow661314/p/3521219.html