日期:2014-05-16  浏览次数:20533 次

js gesture 事件 处理
http://wanglingshu.com/wp-content/uploads/ios-gesture.html


    var canvas = document.getElementById("canvas"),
        spirit, startScale, startRotation;

    function touchStart(e) {
        e.preventDefault();
        if (spirit || e.touches.length != 2) return;
        var touch1 = e.touches[0],
            pagex1 = touch1.pageX,
            pagey1 = touch1.pageY,
            touch2 = e.touches[1],
            pagex2 = touch2.pageX,
            pagey2 = touch2.pageY,
            left = Math.min(pagex1, pagex2),
            top = Math.min(pagey1, pagey2),
            width = Math.abs(pagex1 - pagex2),
            height = Math.abs(pagey1 - pagey2);
        spirit = document.createElement("div");
        spirit.className = "spirit";
        spirit.innerHTML = "fadfdsafsdafsadfsdafsadfsdafsafsda";
        spirit.style.height = height + "px";
        spirit.style.width = width + "px";
        spirit.style.left = left + "px";
        spirit.style.top = top + "px";
        canvas.appendChild(spirit);
    }

    function gestureStart(e) {
        e.preventDefault();
    }

    function gestureChange(e) {
        e.preventDefault();
        if (!spirit) return;
        if (startScale == null || startRotation == null) {
            startScale = e.scale;
            startRotation = e.rotation;
        } else {
            spirit.style.webkitTransform = 'scale(' + e.scale + startScale + ') rotate(' + e.rotation + startRotation + 'deg)';
        }
    }

    function gestureEnd(e) {
        e.preventDefault();
        if (!spirit) return;
        canvas.removeChild(spirit);
        spirit = null;
        startScale = null;
        startRotation = null;
    }

    canvas.addEventListener("touchstart", touchStart, false);
    canvas.addEventListener("gesturestart", gestureStart, false);
    canvas.addEventListener("gesturechange", gestureChange, false);
    canvas.addEventListener("gestureend", gestureEnd, false);