我有以下方法$broadcast
可以在Angular中捕获按键:
$document.bind('keypress', function(event) {
var key = event.which;
$rootScope.$broadcast('keypress', event);
$rootScope.$broadcast('keypress:' + key, event);
});
我听着 $on
但是,我想检测何时同时按下两个键,例如enter
和s
同时按下(不是一个一个又一个又一个的组合)。
最好的方法是什么?
编辑
我当时想的是:
var keys = [];
$document.bind('keydown', function(event) {
keys[event.which] = true;
});
$document.bind('keyup', function(event) {
delete keys[event.which];
});
$document.bind('keypress', function(event) {
var key = event.which;
var keysPressed = [];
angular.forEach(keys, function(value, key) {
keysPressed += 'keypress:' + key;
});
$rootScope.$broadcast('keypress', event);
$rootScope.$broadcast(keysPressed, event);
});
因此,如果我有多个按键,那么我将创建正确的$broadcast
。但是,问题在于,现在顺序很重要(即,如果我按a
then
enter
,则按$broadcast
is
keypress:58keypress:13
;如果我按另一种方式按,则得到keypress:13keypress:58
)
我认为广播使用过多。而是使用自定义指令?这是一个用户按下Shift
+ 的示例,Tab
它触发了如下事件:
<input on-shift-tab="prevStep($event,'email')" />
app.directive('onShiftTab', function() {
return function(scope, element, attrs) {
var map = {9: false, 16: false};
element.on("keydown", function(event) {
if (event.which in map) {
map[event.which] = true;
if (map[9] && map[16]) {
scope.$apply(function(){
scope.$eval(attrs.onShiftTab, {'$event': event});
});
event.preventDefault();
}
}
});
element.on("keyup", function(event) {
if (event.which in map) {
map[event.keyCode] = false;
}
});
};
})
问题内容: 当我单击一个按钮时,我想运行多种功能。例如,我希望我的按钮看起来像 当我执行此语句时,出现错误,因为我无法两次为参数分配内容。如何使命令执行多个功能。 问题答案: 您可以创建一个用于组合功能的通用功能,看起来可能像这样: 然后,您可以像这样创建按钮:
正如标题所说,我想检测多个键盘键同时(同时)按下和正在(同时)按下一段时间。我试图在上添加多个事件处理程序,但不起作用: 但是,当用户同时按[]和[]并保持按下时,上面的两个操作必须同时发生,而不仅仅是其中一个。
问题内容: 我正在尝试用Java创建一个简单的Pong游戏,但我不知道如何让两个玩家同时使用键盘。游戏尚不完整,我目前正在为两位玩家进行划桨动作。问题是,当一个玩家按下自己的向上键并向上移动其拨片时,但是如果其他玩家按下其任意键,则会取消先前的玩家动作并导致拨片停止。我想我需要一种同时处理多个键输入的方法。这是我的代码,底部的KeyListeners是我需要帮助的地方。我只有1年的Java程序员,
我无法弄清楚每三个条目的like按钮是如何以及为什么被按下的,从我实际按下的like按钮开始,但(幸运的是)只有一个,而且也调用了正确的API。 请帮忙。
问题内容: 我正在尝试开发JavaScript游戏引擎,但遇到了这个问题: 当我按下时,角色跳跃。 当我按下时,角色向右移动。 问题是当我向右按然后按空格键时,角色会跳跃然后停止移动。 我使用该功能来按下键。如何检查是否同时按下多个键? 问题答案: **注意:现已弃用 如果您了解概念,则可以轻松进行多次击键检测 我这样做的方式是这样的: 这段代码非常简单:由于计算机一次只传递一个按键,因此创建了一
我是一个新手,我正在尝试创建一个应用程序来在我的投资组合中使用。本质上,该程序是一个可以访问不同菜单的菜单(json文件:texas_pick.js,Breakth.js…),该程序旨在以按钮的形式显示菜单选项,按钮的详细信息从各自的json文件中检索。我面临的问题是,单击菜单选项时,会检索最后一个菜单项的数据。我将后端编程为只将商品名称和价格推送到数据库,而前端则检索这些数据并将其显示在表上。检