В настоящее время я создаю сайт AngularJS с игрой. Здесь я хочу использовать клавиатуру для возобновления/приостановки и управления игрой. Код я должен добавить EventListener следующий:Keydown/Keyup вызывается 7 раз
$window.addEventListener('keydown', function(e) {
if ($scope.gameState.playing) {
for (var control in controls) {
if (controls.LEFT.indexOf(e.keyCode) > -1) {
gameEngine.startLeft();
} else if (controls.RIGHT.indexOf(e.keyCode) > -1) {
gameEngine.startRight();
} else if (controls.POWERJUMP.indexOf(e.keyCode) > -1) {
gameEngine.powerJump();
} else if (controls.PAUSE.indexOf(e.keyCode) > -1) {
$scope.pauseGame();
}
}
}
});
содержания функции не очень важно, но моя проблема в том, что она вызывается 7 раз каждый раз, когда я нажать клавишу. То же самое с keyup
. Однако быстро или медленно я нажимаю.
var GameApp = angular.module('GameApp', []);
GameApp.controller('GameController', function($scope, $timeout, $window)
Приведенный выше код - это то, как я создаю приложение и контроллер углов с аргументом $ window.
Я не мог найти решение для этого. Надеюсь, кто-нибудь знает, почему это происходит.
Как вы называете $ window.addEventListener? Внутри какого контроллера? Это внутри директивы? Сколько раз инициализируется эта директива? Это поможет узнать разметку вашего приложения, чтобы помочь вам – Loupax
Также имейте в виду, что если $ window.addEventListener находится внутри GameController, если у вас есть маршрутизация, то для GameController можно инициализировать много раз, считывая прослушиватель событий каждый раз. – Loupax