| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-     <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>
 
-     <style>
 
-         html, body {
 
-             overflow: hidden;
 
-             margin: 0;
 
-         }
 
-         body {
 
-             -webkit-perspective: 500;
 
-             -moz-perspective: 500;
 
-             perspective: 500;
 
-         }
 
-         .animate {
 
-             -webkit-transition: all .3s;
 
-             -moz-transition: all .3s;
 
-             transition: all .3s;
 
-         }
 
-         #hit {
 
-             padding: 10px;
 
-         }
 
-         #log {
 
-             position: absolute;
 
-             padding: 10px;
 
-         }
 
-     </style>
 
- </head>
 
- <body>
 
- <div id="log"></div>
 
- <div id="hit" style="background: #42d692; width: 150px; height: 150px;"></div>
 
- <script src="../../hammer.js"></script>
 
- <script>
 
-     var reqAnimationFrame = (function () {
 
-         return window[Hammer.prefixed(window, 'requestAnimationFrame')] || function (callback) {
 
-             window.setTimeout(callback, 1000 / 60);
 
-         };
 
-     })();
 
-     var log = document.querySelector("#log");
 
-     var el = document.querySelector("#hit");
 
-     var START_X = Math.round((window.innerWidth - el.offsetWidth) / 2);
 
-     var START_Y = Math.round((window.innerHeight - el.offsetHeight) / 2);
 
-     var ticking = false;
 
-     var transform;
 
-     var timer;
 
-     var mc = new Hammer.Manager(el);
 
-     mc.add(new Hammer.Pan({ threshold: 0, pointers: 0 }));
 
-     mc.add(new Hammer.Swipe()).recognizeWith(mc.get('pan'));
 
-     mc.add(new Hammer.Rotate({ threshold: 0 })).recognizeWith(mc.get('pan'));
 
-     mc.add(new Hammer.Pinch({ threshold: 0 })).recognizeWith([mc.get('pan'), mc.get('rotate')]);
 
-     mc.add(new Hammer.Tap({ event: 'doubletap', taps: 2 }));
 
-     mc.add(new Hammer.Tap());
 
-     mc.on("panstart panmove", onPan);
 
-     mc.on("rotatestart rotatemove", onRotate);
 
-     mc.on("pinchstart pinchmove", onPinch);
 
-     mc.on("swipe", onSwipe);
 
-     mc.on("tap", onTap);
 
-     mc.on("doubletap", onDoubleTap);
 
-     mc.on("hammer.input", function(ev) {
 
-         if(ev.isFinal) {
 
-             resetElement();
 
-         }
 
-     });
 
-     function resetElement() {
 
-         el.className = 'animate';
 
-         transform = {
 
-             translate: { x: START_X, y: START_Y },
 
-             scale: 1,
 
-             angle: 0,
 
-             rx: 0,
 
-             ry: 0,
 
-             rz: 0
 
-         };
 
-         requestElementUpdate();
 
-         if (log.textContent.length > 2000) {
 
-             log.textContent = log.textContent.substring(0, 2000) + "...";
 
-         }
 
-     }
 
-     function updateElementTransform() {
 
-         var value = [
 
-                     'translate3d(' + transform.translate.x + 'px, ' + transform.translate.y + 'px, 0)',
 
-                     'scale(' + transform.scale + ', ' + transform.scale + ')',
 
-                     'rotate3d('+ transform.rx +','+ transform.ry +','+ transform.rz +','+  transform.angle + 'deg)'
 
-         ];
 
-         value = value.join(" ");
 
-         el.textContent = value;
 
-         el.style.webkitTransform = value;
 
-         el.style.mozTransform = value;
 
-         el.style.transform = value;
 
-         ticking = false;
 
-     }
 
-     function requestElementUpdate() {
 
-         if(!ticking) {
 
-             reqAnimationFrame(updateElementTransform);
 
-             ticking = true;
 
-         }
 
-     }
 
-     function logEvent(str) {
 
-         //log.insertBefore(document.createTextNode(str +"\n"), log.firstChild);
 
-     }
 
-     function onPan(ev) {
 
-         el.className = '';
 
-         transform.translate = {
 
-             x: START_X + ev.deltaX,
 
-             y: START_Y + ev.deltaY
 
-         };
 
-         requestElementUpdate();
 
-         logEvent(ev.type);
 
-     }
 
-     var initScale = 1;
 
-     function onPinch(ev) {
 
-         if(ev.type == 'pinchstart') {
 
-             initScale = transform.scale || 1;
 
-         }
 
-         el.className = '';
 
-         transform.scale = initScale * ev.scale;
 
-         requestElementUpdate();
 
-         logEvent(ev.type);
 
-     }
 
-     var initAngle = 0;
 
-     function onRotate(ev) {
 
-         if(ev.type == 'rotatestart') {
 
-             initAngle = transform.angle || 0;
 
-         }
 
-         el.className = '';
 
-         transform.rz = 1;
 
-         transform.angle = initAngle + ev.rotation;
 
-         requestElementUpdate();
 
-         logEvent(ev.type);
 
-     }
 
-     function onSwipe(ev) {
 
-         var angle = 50;
 
-         transform.ry = (ev.direction & Hammer.DIRECTION_HORIZONTAL) ? 1 : 0;
 
-         transform.rx = (ev.direction & Hammer.DIRECTION_VERTICAL) ? 1 : 0;
 
-         transform.angle = (ev.direction & (Hammer.DIRECTION_RIGHT | Hammer.DIRECTION_UP)) ? angle : -angle;
 
-         clearTimeout(timer);
 
-         timer = setTimeout(function () {
 
-             resetElement();
 
-         }, 300);
 
-         requestElementUpdate();
 
-         logEvent(ev.type);
 
-     }
 
-     function onTap(ev) {
 
-         transform.rx = 1;
 
-         transform.angle = 25;
 
-         clearTimeout(timer);
 
-         timer = setTimeout(function () {
 
-             resetElement();
 
-         }, 200);
 
-         requestElementUpdate();
 
-         logEvent(ev.type);
 
-     }
 
-     function onDoubleTap(ev) {
 
-         transform.rx = 1;
 
-         transform.angle = 80;
 
-         clearTimeout(timer);
 
-         timer = setTimeout(function () {
 
-             resetElement();
 
-         }, 500);
 
-         requestElementUpdate();
 
-         logEvent(ev.type);
 
-     }
 
-     resetElement();
 
- </script>
 
- </body>
 
- </html>
 
 
  |