Scene scene = this.root.getScene();
scene.addEventHandler(KeyEvent.KEY_PRESSED, event -> gameManager.restartGame(event));
scene.removeEventHandler(KeyEvent.KEY_PRESSED, event -> gameManager.restartGame(event));
при таком коде во время запуска игры по идее должно пропадать действие при нажатии кнопки. Без добавления eventHandler игра не реагирует, но вот убрать его она не дает. Что может быть не так ?
scene и stage всегда остаются теми же
Не понятно зачем убирать обработчик, сразу после того как Вы его добавили. Ну да ладно, Бог Вам судья. А если серьезно, то Вам надо хэндлер создать отдельно, т.е. не лямбдой его передавать, а прям создать объект EventHandler.
EventHandler<KeyEvent> handler = new EventHadler<>() {
public void handle(KeyEvent event) {
gameManager.restartGame(event);
}
};
scene.addEventHandler(KeyEvent.KEY_PRESSED, handler);
scene.removeEventHandler(KeyEvent.KEY_PRESSED, handler);
Я не уверен на 100%, но думаю сие поведение обусловлено именно тем, что при передаче обработчиков лямбдой, Вы получаете два разных объекта. Соответственно удаление становится проблематичным, т.к. мы не знаем какой именно хэндлер надо удалить. Когда у нас объект хэндлера будет один - мы сможем однозначно его идентифицировать и удалить.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости