var InputHandler = function (element) { this.element = element; this.mc = Hammer(element, { touchAction: "auto" }); };
return Bacon.fromBinder(function(sink) { function push(e) { sink(e); } Hammer(target).on(event, push) return function() { Hammer(target).off(event, push) } })
function Roller (options) { if (!options.el) { return console.warn('Roller: requires a target element.') } Emitter.call(this) this.el = options.el // initial states this.dragging = false this.enabled = false this.y = 0 this.lastY = 0 this.ty = 0 this.startY = 0 this.momentum = 0 this.upperBound = this.lowerBound = 0 // merge options for (var key in defaults) { this[key] = defaults[key] } for (var key in options) { this[key] = options[key] } // setup events var self = this Hammer(this.el, options.hammer) .on('touch', function () { self.momentum = 0 }) .on('dragstart', function () { if (!self.enabled) return self.dragging = true self.onStart() }) .on('drag', function (e) { if (!self.enabled) return self.onMove(e.gesture) }) .on('dragend', function () { if (!self.enabled) return self.dragging = false self.onEnd() }) // option force enabled on start if (this.enabled) { this.loop() } }
function init() { var eventListeners = ['keydown', 'keyup']; _.map(eventListeners, function(listener) { document.addEventListener(listener, processInput, false); }); var leftElement = document.getElementById('left'); var rightElement = document.getElementById('right'); var topElement = document.getElementById('shoot'); hammer(leftElement). on("touch", processInput). on("release", processInput); hammer(rightElement). on("touch", processInput). on("release", processInput); hammer(topElement). on("touch", processInput). on("release", processInput); }
enter: function (params) { articles = []; state = this; lastParams = {}; hammer(elements.content, utils.hammerOptions()).on('tap', function (e) { if (e.target.getAttribute('data-article-id')) { var articleParams = {id: e.target.getAttribute('data-article-id')}; if (params.r) { articleParams.r = params.r; } router.state('global.root.article.root', articleParams); } }); state.data('articles', state.data('loaded').then(function () { return loadArticles(params.page || 0); })); state.data('articles').done(function () { state.update(params); }); },
function startNeverEndingGame (images) { var player; var startSign; var infoBox; var game; function resetGame () { monstersComeOut = false; distanceTravelledInMetres = 0; livesLeft = 5; highScore = localStorage.getItem('highScore'); game.reset(); game.addStaticObject(startSign); } function detectEnd () { if (!game.isPaused()) { highScore = localStorage.setItem('highScore', distanceTravelledInMetres); infoBox.setLines([ 'Game over!', 'Hit space to restart' ]); game.pause(); game.cycle(); } } function randomlySpawnNPC(spawnFunction, dropRate) { var rateModifier = Math.max(800 - mainCanvas.width, 0); if (Number.random(1000 + rateModifier) <= dropRate) { spawnFunction(); } } function spawnMonster () { var newMonster = new Monster(sprites.monster); var randomPosition = dContext.getRandomMapPositionAboveViewport(); newMonster.setMapPosition(randomPosition[0], randomPosition[1]); newMonster.follow(player); newMonster.onHitting(player, monsterHitsSkierBehaviour); game.addMovingObject(newMonster, 'monster'); } function spawnBoarder () { var newBoarder = new Snowboarder(sprites.snowboarder); var randomPositionAbove = dContext.getRandomMapPositionAboveViewport(); var randomPositionBelow = dContext.getRandomMapPositionBelowViewport(); newBoarder.setMapPosition(randomPositionAbove[0], randomPositionAbove[1]); newBoarder.setMapPositionTarget(randomPositionBelow[0], randomPositionBelow[1]); newBoarder.onHitting(player, sprites.snowboarder.hitBehaviour.skier); game.addMovingObject(newBoarder); } player = new Skier(sprites.skier); player.setMapPosition(0, 0); player.setMapPositionTarget(0, -10); game = new Game(mainCanvas, player); startSign = new Sprite(sprites.signStart); game.addStaticObject(startSign); startSign.setMapPosition(-50, 0); dContext.followSprite(player); infoBox = new InfoBox({ initialLines : [ 'SkiFree.js', infoBoxControls, 'Travelled 0m', 'High Score: ' + highScore, 'Skiers left: ' + livesLeft, 'Created by Dan Hough (@basicallydan)' ], position: { top: 15, right: 10 } }); game.beforeCycle(function () { var newObjects = []; if (player.isMoving) { newObjects = Sprite.createObjects([ { sprite: sprites.smallTree, dropRate: 4 }, { sprite: sprites.tallTree, dropRate: 2 }, { sprite: sprites.jump, dropRate: 1 }, { sprite: sprites.thickSnow, dropRate: 1 }, { sprite: sprites.rock, dropRate: 1 }, ], { rateModifier: Math.max(800 - mainCanvas.width, 0), position: function () { return dContext.getRandomMapPositionBelowViewport(); }, player: player }); } game.addStaticObjects(newObjects); randomlySpawnNPC(spawnBoarder, 0.01); distanceTravelledInMetres = parseFloat(player.getPixelsTravelledDownMountain() / pixelsPerMetre).toFixed(1); if (!game.isPaused()) { infoBox.setLines([ 'SkiFree.js', infoBoxControls, 'Travelled ' + distanceTravelledInMetres + 'm', 'Skiers left: ' + livesLeft, 'High Score: ' + highScore, 'Created by Dan Hough (@basicallydan)', 'Current Speed: ' + player.getSpeed()/*, 'Skier Map Position: ' + player.mapPosition[0].toFixed(1) + ', ' + player.mapPosition[1].toFixed(1), 'Mouse Map Position: ' + mouseMapPosition[0].toFixed(1) + ', ' + mouseMapPosition[1].toFixed(1)*/ ]); } }); game.afterCycle(function() { if (livesLeft === 0) { detectEnd(); } }); game.addUIElement(infoBox); $(mainCanvas) .mousemove(function (e) { game.setMouseX(e.pageX); game.setMouseY(e.pageY); player.resetDirection(); player.startMovingIfPossible(); }) .bind('click', function (e) { game.setMouseX(e.pageX); game.setMouseY(e.pageY); player.resetDirection(); player.startMovingIfPossible(); }) .focus(); // So we can listen to events immediately Mousetrap.bind('f', player.speedBoost); Mousetrap.bind('t', player.attemptTrick); Mousetrap.bind(['w', 'up'], function () { player.stop(); }); Mousetrap.bind(['a', 'left'], function () { if (player.direction === 270) { player.stepWest(); } else { player.turnWest(); } }); Mousetrap.bind(['s', 'down'], function () { player.setDirection(180); player.startMovingIfPossible(); }); Mousetrap.bind(['d', 'right'], function () { if (player.direction === 90) { player.stepEast(); } else { player.turnEast(); } }); Mousetrap.bind('m', spawnMonster); Mousetrap.bind('b', spawnBoarder); Mousetrap.bind('space', resetGame); var hammertime = Hammer(mainCanvas).on('hold', function (e) { game.setMouseX(e.position[0].x); game.setMouseY(e.position[0].y); }).on('tap', function (e) { game.setMouseX(e.position[0].x); game.setMouseY(e.position[0].y); }).on('drag', function (e) { game.setMouseX(e.position.x); game.setMouseY(e.position.y); }).on('doubletap', function (e) { player.speedBoost(); }); player.isMoving = false; player.setDirection(270); game.start(); }
Vue.directive('ti-gesture', { params: [ 'modify-table-info' ], bind(){}, update(){ console.log(this); console.log(this.el); let intervalUpdateTable = {}; let vd = this; let modifyTableInfo = JSON.parse(vd.params.modifyTableInfo); Hammer(this.el).on('press', function(e){ intervalUpdateTable = setInterval(() => { console.log(vd.params); console.log(vd.vm.modifyTableInfo); vd.vm.modifyTableInfo = Object.assign({}, modifyTableInfo); }, 50); }); $(document).mouseup(function(e){ clearInterval(intervalUpdateTable); }); // this.el.addEventListener('mouseup', function(e){ // console.log(e);
return function() { Hammer(target).off(event, push) }
var ui = require('getids')(document.body) var closeness = require('closeness') var released = true var t0 = null var h = window.innerHeight var maxDelta = h * .86 var minTop = 0 - maxDelta var maxTop = 0 var wasDragging = false var dragged = 0; var closeEnough = closeness(-maxDelta, 5) var closeEnoughD = closeness(0, 5) var top = 0; var updown = false; hammer(document.body).on('dragup dragdown swipeup swipedown', function(evt){ evt.gesture.preventDefault() }) ui.top.classList.add('swipe') hammer(ui.top).on('swipeup', swipeup) hammer(ui.top).on('swipedown',swipedown) hammer(ui.top).on('release', function(evt){ if(!wasDragging) return var d = evt.gesture.direction if(d == 'up' && updown) return if(d == 'down' && !updown) return wasDragging = false var el = this if(evt.gesture.direction == 'down') xxx = top else xxx = -top