正如标题所说,我想检测多个键盘键同时(同时)按下和正在(同时)按下一段时间。我试图在场景
上添加多个事件处理程序,但不起作用:
EventHandler<KeyEvent> handler1 = key -> {
//logic1 here
}
EventHandler<KeyEvent> handler2 = key -> {
//logic1 here
}
getScene().addEventHandler(KeyEvent.KEY_PRESSED, handler1);
getScene().addEventHandler(KeyEvent.KEY_PRESSED, handler2);
但是,当用户同时按[向右箭头
]和[向上箭头
]并保持按下时,上面的两个操作必须同时发生,而不仅仅是其中一个。
只需操作一些布尔属性:
private BooleanProperty upPressed = new SimpleBooleanProperty();
private BooleanProperty rightPressed = new SimpleBooleanProperty();
private BooleanBinding anyPressed = upPressed.or(rightPressed);
// ...
getScene().setOnKeyPressed(e -> {
if (e.getCode() == KeyCode.UP) {
upPressed.set(true);
}
if (e.getCode() == KeyCode.RIGHT) {
rightPressed.set(true);
}
});
getScene().setOnKeyReleased(e -> {
if (e.getCode() == KeyCode.UP) {
upPressed.set(false);
}
if (e.getCode() == KeyCode.RIGHT) {
rightPressed.set(false);
}
});
如果同时按下两个键,则两个属性都为true,因此您可以使用布尔属性注册侦听器,或者根据需要在AnimationTimer
中检查它们,例如:
double delta = .. ;
AnimationTimer timer = new AnimationTimer() {
@Override
public void handle(long timestamp) {
if (upPressed.get()) {
rect.setY(rect.getY()-delta);
rect.setHeight(rect.getHeight() + delta);
}
if (rightPressed.get()) {
rect.setWidth(rect.getWidth() + delta);
}
}
};
anyPressed.addListener((obs, wasPressed, isNowPressed) -> {
if (isNowPressed) {
timer.start();
} else {
timer.stop();
}
});
问题内容: 我有以下方法可以在Angular中捕获按键: 我听着 但是,我想检测何时同时按下两个键,例如和同时按下(不是一个一个又一个又一个的组合)。 最好的方法是什么? 编辑 我当时想的是: 因此,如果我有多个按键,那么我将创建正确的。但是,问题在于,现在顺序很重要(即,如果我按then ,则按is ;如果我按另一种方式按,则得到) 问题答案: 我认为广播使用过多。而是使用自定义指令?这是一个用
问题内容: 我正在尝试开发JavaScript游戏引擎,但遇到了这个问题: 当我按下时,角色跳跃。 当我按下时,角色向右移动。 问题是当我向右按然后按空格键时,角色会跳跃然后停止移动。 我使用该功能来按下键。如何检查是否同时按下多个键? 问题答案: **注意:现已弃用 如果您了解概念,则可以轻松进行多次击键检测 我这样做的方式是这样的: 这段代码非常简单:由于计算机一次只传递一个按键,因此创建了一
问题内容: 我想按一下软键盘上的任何键。我不想在Activity中使用EditView或TextView,必须从Activity内部的扩展View处理该事件。 我只是试过这个: 1)覆盖活动方法。该功能不适用于软键盘,只能捕获很少的硬键盘。 2)创建我的并在我的视图中注册该视图,其中包含已注册并正在运行的。这对于软键盘根本不起作用。 3)覆盖View方法。如果我设置我的OnKeyListener或
问题内容: 如何在单个场景中检测到多个关键事件?我需要我的程序来检测何时同时按下空格键 和 向右箭头键。 前三个表达式查找单个键并正常工作。最终表达式永远不会返回true。我相信只有最新的键事件才传递给处理程序。 我查看了KeyCodeCombination,但是这似乎适用于键具有指定列表(ALT_DOWN,SHIFT_DOWN等)中的修饰键的情况。 我可以使用FX中的实用程序吗? 问题答案: 试
问题内容: jQuery是否有办法检测到同时按下了多个键? 是否有其他方法可以同时检测两个键? 问题答案: 为了检测按住多个键,请使用和事件。
问题内容: 是否有可能结合按键的组合来触发单个事件? 我已经在Chrome浏览器中尝试过,但该事件不会触发。 称我为疯狂,但我正在编写Chrome扩展程序,并希望同时按下+ + 键将其强制为隐藏的开发人员模式。 问题答案: 如果要检测的,和钥匙都在同一时间全部下来,你得看都和并保持地图为down的那些的。当他们全都崩溃时,请触发您的事件。 我假设您不关心它们按什么顺序按下(因为要可靠地按一下会很痛