| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | <!DOCTYPE html><html><head lang="en">    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">    <link rel="stylesheet" href="assets/style.css">    <title>Hammer.js</title></head><body><div class="container">    <div id="hit" class="bg4" style="padding: 30px; height: 300px; position: relative;">    </div>    <pre id="debug" style="overflow:hidden; background: #eee; padding: 15px;"></pre>    <pre id="log" style="overflow:hidden;"></pre></div><script src="../../node_modules/hammer-simulator/index.js"></script><script src="../../hammer.js"></script><script>    var program = [        ['pan', ['deltaX','deltaY']],        ['pinch', ['scale']],        ['tap', ['pos']],        ['swipe', ['deltaX','deltaY']],        ['pinch', ['pos','scale']],        ['pan', ['pos']],        ['rotate', ['pos','rotation']],        ['doubleTap', ['pos']],        ['pinchRotate', ['pos','scale','rotation']],    ];    function randomRange(min, max) {        return Math.random() * (max - min) + min;    }    function randomRangeInt(min, max) {        return Math.round(randomRange(min, max));    }    function gestureOption(name) {        var max = el.offsetWidth * .9;        switch(name) {            case 'deltaY':            case 'deltaX':                return randomRangeInt(10, max * .5);            case 'pos':                return [randomRangeInt(10, max), randomRangeInt(10, max)];            case 'scale':                return randomRange(.2, 2);            case 'rotation':                return randomRange(-180, 180);        }    }    function walkProgram(done) {        var clone = [].concat(program);        (function next() {            if(clone.length) {                var entry = clone.shift();                var options = {};                for(var i=0; i<entry[1].length; i++) {                    options[entry[1][i]] = gestureOption(entry[1][i]);                }                setTimeout(function() {                    log.innerHTML = '';                    Simulator.gestures[entry[0]](el, options, next);                }, 1000);            } else {                done();            }        }());    }    function startSimulator() {        walkProgram(startSimulator);    }    var el = document.querySelector("#hit");    var log = document.querySelector("#log");    var debug = document.querySelector("#debug");    var mc = new Hammer(el);    mc.get('pinch').set({ enable: true, threshold:.1 });    mc.get('rotate').set({ enable: true });    mc.on("swipe pan multipan press pinch rotate tap doubletap", logGesture);    function logGesture(ev) {        log.textContent = ev.toDirString();    }    Object.prototype.toDirString = function() {        var output = [];        for(var key in this) {            if(this.hasOwnProperty(key)) {                var value = this[key];                if(Array.isArray(value)) {                    value = "Array("+ value.length +"):"+ value;                } else if(value instanceof HTMLElement) {                    value = value +" ("+ value.outerHTML.substring(0, 50) +"...)";                }                output.push(key +": "+ value);            }        }        return output.join("\n")    };    startSimulator();</script></body></html>
 |