• touch event


    /**
     * Author: humanhuang
     * Date: 13-12-12
     */
    var canvas = document.getElementById("canvas"),
        stacks = [{
            color: "red"
        }, {
            color: "blue"
        }, {
            color: "green"
        }, {
            color: "black"
        }, {
            color: "yellow"
        }, {
            color: "orange"
        }];
    
    function getEmptyStack() {
        var i = 0, s, l = stacks.length;
        for (; i < l; i++) {
            s = stacks[i];
            if (!s.touchId)
                return s;
        }
        return null;
    }
    
    function getStackByTouchId(touchId) {
        var i = 0, s, l = stacks.length;
        for (; i < l; i++) {
            s = stacks[i];
            if (s.touchId == touchId)
                return s;
        }
        return null;
    }
    
    function touchStart(e) {
        e.preventDefault();
        var touches = e.changedTouches,
            i = 0, l = touches.length, touch, stack;
        for (; i < l; i++) {
            touch = touches[i];
            stack = getStackByTouchId(touch.identifier);
            if (stack) return;
            stack = getEmptyStack();
            if (stack) {
                stack.touchId = touch.identifier;
                stack.spirit = document.createElement("div");
                stack.spirit.className = "spirit";
                stack.startX = touch.pageX;
                stack.startY = touch.pageY;
                stack.spirit.style.left = touch.pageX + "px";
                stack.spirit.style.top = touch.pageY + "px";
                stack.spirit.style.backgroundColor = stack.color;
                canvas.appendChild(stack.spirit);
            } else { // stack list is full
                return;
            }
        }
    }
    
    function touchMove(e) {
        e.preventDefault();
        var touches = e.targetTouches,
            i = 0, l = touches.length, touch, stack;
        for (; i < l; i++) {
            touch = touches[i];
            stack = getStackByTouchId(touch.identifier);
            if (stack) {
                var x = touch.pageX - stack.startX,
                    y = touch.pageY - stack.startY,
                    spirit = stack.spirit;
                spirit.style.webkitTransform = 'translate(' + x + 'px, ' + y + 'px)';
            }
        }
    }
    
    function touchEnd(e) {
        var touches = e.changedTouches,
            i = 0, l = touches.length, touch, stack;
    //        alert(e.targetTouches.length);
        for (;i < l; i++) {
            touch = touches[i];
            stack = getStackByTouchId(touch.identifier);
            if (stack) {
                stack.touchId = null;
                canvas.removeChild(stack.spirit);
                stack.spirit = null;
            }
        }
    }
    
    function touchCancel(e) {
        var touches = e.changedTouches,
            i = 0, l = touches.length, touch, stack;
        for (;i < l; i++) {
            touch = touches[i];
            stack = getStackByTouchId(touch.identifier);
            if (stack) {
                stack.touchId = null;
                canvas.removeChild(stack.spirit);
                stack.spirit = null;
            }
        }
    }
    
    canvas.addEventListener("touchstart", touchStart, false);
    canvas.addEventListener("touchmove", touchMove, false);
    canvas.addEventListener("touchend", touchEnd, false);
    canvas.addEventListener("touchCancel", touchCancel, false);
  • 相关阅读:
    异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.
    【IntelliJ IDEA】使用idea解决新建jsp文件而找不到jsp文件模版的新建选项
    SpringBoot 上传附件
    SpringBoot访问资源文件
    springboot 整合 listener
    SpringBoot 整合 filter
    Hello_SpringBoot_demo
    springBoot 整合servlet
    RROR:o.s.b.d.LoggingFailureAnalysisReporter解决办法
    使用IDEA创建一个springboot项目
  • 原文地址:https://www.cnblogs.com/human/p/3471910.html
Copyright © 2020-2023  润新知