好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Javascript 高级手势使用介绍

&nbs p; 在IE10中新加入的对高级用户输入的识别支持,举例说明:注册一个点击操作,通过一句addEventListener 就能够 知道 当前用户的点击是哪种设备,是手指的点击,是鼠标的单击还是触控笔的点击(平板设备都会带有触控笔)。

  < canvas  id =" ;m yCanvas" ></ canvas >
     < script >
        MyCanvas.addEventListener( " MSPointerDown " , MyBack,  false );
         function  MyBack(e) {
            alert(e.pointerTy PE .toString());
        }
     </ script >

 以上这段代码就是能够识别出当前用户的点击是哪种设备,通过回调的方法中 e.pointerType 还进行判断。鼠标是4,触控笔是3,手指是2。至于值为1是何种设备还有待研究。

还有需要注意的就是 想在javascript中添加对输入设备的识别,注册的方法事件也是有点点区别。

addEventListener 添加的事件为 MSPointerDown

而在IE10中对于这样的多种设备识别中优先处理的手指的点击,前提是 不影响 功能 正常 单击的情况下。然而IE10不仅仅能识别用户的输入设备还支持非常多的高级 手势

以下为IE10高级手势支持的演示

 

创建手势对象

在您的网站中处理手势的第一步是实例化手势对象。

@H_ 304 _78@

VAR myGesture = new MSGesture();

接下来,为该手势提供一个目标元素。浏览器将对该元素触发手势事件。同时,该元素还可以确定事件的坐标空间。

elm = document.getElementById( "someElement" );

myGesture.t arg et = elm;

elm.addEventListener( "MSGestureChange" , handleGesture);

最后,告知手势对象在手势识别期间处理 哪些 指针。

elm.addEventListener( "MSPointerDown" , function (evt) {

// adds the current mouse, pen, or touch contact for gesture recogn IT ion

myGesture.addPointer(evt.pointerId);

});

注意:请不要忘记您需要使用 –ms -t ouch-action 来配置元素以 防 止其执行默认触摸操作(例如,平移和缩放),并为输入提供指针事件。

处理手势事件

一旦手势对象具有有效目标并至少添加了一个指针,则其将 开始 触发手势事件。手势事件可分为两种:静态手势(例如,点击或保持)和动态手势(例如,收缩、旋转和轻扫)。

点击

最基本的手势识别是点击。当检测到点击时,将会在手势对象的目标元素触发 MSGestureTap 事件。不同于单击事件,点击手势只能在用户触摸、按鼠标按钮或使用 手写笔 触控而不移动时触发。如果您要区分用户点击元素和拖动元素的操作,这 一点 通常会显得十分有用。

长按

长按手势是指用户使用一个手指触摸屏幕,并保持片刻并抬起而不移动的操作。在长按交互期间, MSGestureHold 事件会针 对手 势的各种状态而多次触发:

复制代码

代码如下:


element.addEventListener("MSGestureHold", handleHold);
function handleHold(evt) {
if (evt.det ai l & am p; evt.MSGESTURE_FLAG_BE gin ) {
// Begin signals the start of a gesture. For the Hold gesture, this means the user has been holding long enough in place t hat the gesture will become a complete Press & hold if the finger is lifted.
}
if (evt.detail & evt.MSGESTURE_FLAG_END) {
// End signals the end of the gesture.
}
if (evt.detail & evt.MSGESTURE_FLAG_CANCEL) {
// Cancel signals the user started the gesture but cancelled it. For hold, this occurs when the user Drag s away before lifting. This flag is sent together with the End flag, signaling the gesture recognition is complete.
}
}


动态手势(收缩、旋转、轻扫和拖动)

动态手势(例如,收缩或旋转)将以转换的形式报告,这与 CSS 2D 转换颇为类似。动态手势可触发三种事件: MSGestureStart 、 MSGestureChange (随着手势的持续而重复触发)和 MSGestureEnd 。每个事件都包含缩放(收缩)、旋转、转换和速度等相关信息。

由于动态手势以转换的形式报告,因此使用包含 CSS 2D 转换的 MSGesture 来操作诸如照片或拼图等元素将变得十分轻松。例如,您可以通过下列方式启用缩放、旋转和拖动元素的操作:

复制代码

代码如下:


targetElement.addEventListener("MSGestureChange", manipulateElement);
function manipulateElement(e) {
// Uncomment the following code if you want to disable the built -i n inertia PR ovided by dyn ami c gesture recognition
// if (e.detail == e.MSGESTURE_FLAG_INERTIA)
// return;
var m = new MSCSSMatrix(e.target.style.transform); // Get the la test CSS transform on the element
e.target.style.transform = m
.translate(e.offsetX, e.offsetY) // Move the transform origin under the center of the gesture
.rotate(e.rotation * 180 / Math.PI) // Apply Rotation
.scale(e.scale) // Apply Scale
.translate(e.translationX, e.translationY) // Apply Translation
.translate(-e.offsetX, -e.offsetY); // Move the transform origin back
}



缩放和旋转等动态手势可支持鼠标操作,具体可通过在旋转鼠标滚轮的同时分别使用 CTRL 或 SHIFT 修饰键来实现。

总结

以上是 为你收集整理的 Javascript 高级手势使用介绍 全部内容,希望文章能够帮你解决 Javascript 高级手势使用介绍 所遇到的问题。

如果觉得 网站内容还不错, 推荐好友。

查看更多关于Javascript 高级手势使用介绍的详细内容...

  阅读:19次