我有一个显示弓箭手的游戏,我试图对其进行设置,以便在按下我的按钮时,允许用户在屏幕上的任意位置单击,然后在发生点击的位置设置一个新的弓箭手。我的代码当前允许我单击屏幕并设置新的弓箭手,而不管是否按下按钮。有人可以解释是什么错误,因为尽管一旦按下按钮,MouseEvent就会在场景中发生。
myButton.setOnMouseClicked(
new EventHandler<MouseEvent>()
{
public void handle(MouseEvent e)
{
gc.setFill(color);
gc.fillRect(0,0,width,height);
scene.setOnMouseClicked(new EventHandler<MouseEvent>()
{
public void handle(MouseEvent e)
{
archer.setX((int)e.getSceneX());
archer.setY((int)e.getSceneY());
archer.drawCharStand(gc);
}
});
}
});
最佳答案
您可以使用ToggleButton
,以便仅在选择切换按钮时放置弓箭手:
private ToggleButton myButton = new ToggleButton("Place Archer");
// ...
scene.setOnMouseClicked(e -> {
if (myButton.isSelected()) {
archer.setX((int)e.getSceneX());
archer.setY((int)e.getSceneY());
archer.drawCharStand(gc);
myButton.setSelected(false);
}
});
放置弓箭手后,最后一行将“自动”取消选择切换按钮。如果您希望用户能够轻松放置多个弓箭手(并且必须手动关闭该模式),请省略该行。
关于java - 处理嵌套事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40141251/