コード例 #1
0
var InputHandler = function (element)
{
    this.element = element;

    this.mc = Hammer(element, {
        touchAction: "auto"
    });
};
コード例 #2
0
ファイル: streams.js プロジェクト: ghiden/React-DragDrop-test
 return Bacon.fromBinder(function(sink) {
     function push(e) {
         sink(e);
     }
     Hammer(target).on(event, push)
     return function() {
         Hammer(target).off(event, push)
     }
 })
コード例 #3
0
ファイル: index.js プロジェクト: yyx990803/roller
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()
    }
}
コード例 #4
0
ファイル: gameInput.js プロジェクト: SyntaxStacks/bubbles
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);
}
コード例 #5
0
ファイル: home.js プロジェクト: pauldijou/farewell
  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); });
  },
コード例 #6
0
ファイル: main.js プロジェクト: SirKnightTG/skifree.js
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();
}
コード例 #7
0
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);
コード例 #8
0
ファイル: streams.js プロジェクト: ghiden/React-DragDrop-test
 return function() {
     Hammer(target).off(event, push)
 }
コード例 #9
0
ファイル: entry.js プロジェクト: NHQ/swipeface
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