如何检测 angular 中的 shift + 向右箭头 + 其他键
How to detect shift + right arrow + some other key in angular
我在 angular 中检测到 shift + 向右箭头 + p 时遇到问题。
我正在使用 angular 1.2.3
我没有问题只检测到右箭头 + p 但是当换档进入游戏时有些刹车
问题是检测按下3个键时的情况:SHIFT + RIGHT ARROW + P
这是 plunker
上的一个工作示例
var app = angular.module('keyboardDemo', []);
app.controller('MainCtrl', function($scope, $timeout) {
/**
* 39 (right arrow)
* 80 (p)
*/
var map = {39: false, 80: false};
$scope.onKeyUp = function(event){
if (map[39] && map[80]) {
$scope.data.message1 = "P + RIGHT pressed!";
$timeout(function(){
$scope.data.message1 = '';
}, 1000);
}
if (event.shiftKey && map[39] && map[80]) {
$scope.data.message2 = "SHIFT + P + RIGHT pressed!";
$timeout(function(){
$scope.data.message2 = '';
}, 1000);
}
var keyCode = getKeyboardEventCode(event);
if (keyCode in map) {
clearKeyCode(keyCode);
}
};
$scope.onKeyDown = function(event){
var keyCode = getKeyboardEventCode(event);
if (keyCode in map) {
map[keyCode] = true;
}
}
var getKeyboardEventCode = function (event) {
return parseInt((window.event ? event.keyCode : event.which));
};
function clearKeyCode(code){
map[code] = false;
}
$scope.data = {
'message1': '',
'message2': ''
};
});
正如评论中所说。您的代码实际上运行良好。在 macOS 上使用 chrome,当我按下 "SHIFT + P + RIGHT ARROW" 并释放按键时,我会看到两条消息。
我在 angular 中检测到 shift + 向右箭头 + p 时遇到问题。
我正在使用 angular 1.2.3
我没有问题只检测到右箭头 + p 但是当换档进入游戏时有些刹车
问题是检测按下3个键时的情况:SHIFT + RIGHT ARROW + P
这是 plunker
上的一个工作示例var app = angular.module('keyboardDemo', []);
app.controller('MainCtrl', function($scope, $timeout) {
/**
* 39 (right arrow)
* 80 (p)
*/
var map = {39: false, 80: false};
$scope.onKeyUp = function(event){
if (map[39] && map[80]) {
$scope.data.message1 = "P + RIGHT pressed!";
$timeout(function(){
$scope.data.message1 = '';
}, 1000);
}
if (event.shiftKey && map[39] && map[80]) {
$scope.data.message2 = "SHIFT + P + RIGHT pressed!";
$timeout(function(){
$scope.data.message2 = '';
}, 1000);
}
var keyCode = getKeyboardEventCode(event);
if (keyCode in map) {
clearKeyCode(keyCode);
}
};
$scope.onKeyDown = function(event){
var keyCode = getKeyboardEventCode(event);
if (keyCode in map) {
map[keyCode] = true;
}
}
var getKeyboardEventCode = function (event) {
return parseInt((window.event ? event.keyCode : event.which));
};
function clearKeyCode(code){
map[code] = false;
}
$scope.data = {
'message1': '',
'message2': ''
};
});
正如评论中所说。您的代码实际上运行良好。在 macOS 上使用 chrome,当我按下 "SHIFT + P + RIGHT ARROW" 并释放按键时,我会看到两条消息。