Apr 7, 2014 - javascript, 前端    No Comments

对于移动端浏览器touch事件的研究总结(3)一个圆形跟随手指滑动的例子

效果很简单,单根手指在屏幕上点击后页面上出现一个红色的圆形图案,手指在屏幕上滑动,圆形图案跟随手指移动而移动,手指离开屏幕,圆形图案消失。

功能正好一一对应手指的三种状态:touchstart,touch move,touchend

代码如下:

touchstart:

function touchStart(event) {
    event.preventDefault(); // 这个方法阻止事件的默认动作,触摸事件的默认动作是滚屏,我们不想屏幕动来动去的,所以先调用一下这个函数。
    if (spirit || ! event.originalEvent.changedTouches.length) { // 是否已经有了一个spirit 或者 是否已经有了一根手指放在了屏幕上
        return;
    }
    startX = event.originalEvent.changedTouches[0].pageX;
    startY = event.originalEvent.changedTouches[0].pageY;
    spirit = $("<div></div>");
    spirit.addClass("spirit");
    spirit.css({"left":startX, "top":startY});
    $body.append(spirit);
}


touchmove:

function touchMove(event) {
	event.preventDefault();
    if (!spirit || ! event.originalEvent.changedTouches.length) {
        return;
    }	
	endX = event.originalEvent.changedTouches[0].pageX - startX;
	endY = event.originalEvent.changedTouches[0].pageY - startY;
    spirit.css("webkit-transform", "translate("+endX+"px, "+endY+"px)");
}

touchend:

function touchEnd(event) {
    if (!spirit) {
        return;
    }
    spirit.remove();
    spirit = null;
}

实际的效果可以用移动设备访问这个地址:http://aresli.com/demo/touch-event/touch3.html

原生JS写法的例子在这里:http://aresli.com/demo/touch-event/touch4.html

Got anything to say? Go ahead and leave a comment!