| module.exports = function DeviceControlKeyDirective() { |
| return { |
| restrict: 'A' |
| , link: function(scope, element, attrs) { |
| var key = attrs.deviceControlKey |
| |
| function up() { |
| scope.control.keyUp(key) |
| } |
| |
| function down() { |
| scope.control.keyDown(key) |
| } |
| |
| function touchUp(e) { |
| if (e.touches.length === 0) { |
| element.unbind('touchleave', touchUp) |
| element.unbind('touchend', touchUp) |
| up() |
| } |
| } |
| |
| function mouseUp() { |
| element.unbind('mouseup', mouseUp) |
| element.unbind('mouseleave', mouseUp) |
| up() |
| } |
| |
| element.bind('touchstart', function(e) { |
| e.preventDefault() |
| if (e.touches.length === e.changedTouches.length) { |
| element.bind('touchleave', touchUp) |
| element.bind('touchend', touchUp) |
| down() |
| } |
| }) |
| |
| element.bind('mousedown', function(e) { |
| e.preventDefault() |
| element.bind('mouseup', mouseUp) |
| element.bind('mouseleave', mouseUp) |
| down() |
| }) |
| } |
| } |
| } |