При загрузке в новый FXML и установке центра BorderPane существует кратковременное "замораживание" приложения, где существующая анимация, будь то на временной шкале или из gif в представлении изображения, остановится. Я использую этот код для изменения centerView:
@FXML
public void handleChangeView(ActionEvent event) {
Task<Parent> loadTask = new Task<>() {
@Override
public Parent call() throws IOException {
String changeButtonID = ((ToggleButton) event.getSource()).getId();
Parent newOne = getFxmls().get(changeButtonID);
if (newOne == null) {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/" + changeButtonID + ".fxml"));
newOne = loader.load();
getFxmls().put(changeButtonID, newOne);
}
return newOne ;
}
};
loadTask.setOnSucceeded(e -> {
getMainUI().setCenter(loadTask.getValue());
});
loadTask.setOnFailed(e -> loadTask.getException().printStackTrace());
Thread thread = new Thread(loadTask);
thread.start();
}
И хотя это делает работу по поддержанию пользовательского интерфейса в режиме загрузки, когда центральная ступень отображается в первый раз, появляется заметное отставание. Глядя на профиль процессора:
Я не уверен, что задержка происходит от выполняемой функции инициализации или загрузки элементов. Здесь gif программы, вы можете видеть видимую задержку:
Загружая его в VLC и перепрограммируя кадр за кадром, задержка выглядит как 5 или 6 кадров в формате 30 кадров в секунду, что означает около 200 мс задержки, что предполагает, что анимация замерзает более чем на 50 мс или около того. (Может быть, весь метод загрузки замораживает анимацию?)
Вопрос в том, можно ли сохранить анимацию гладкой во время этого?
//********* РЕДАКТИРОВАТЬ **********//
Поэтому я прошел проект и вырезал как можно больше методов и классов, сократив всю игру до 6 минимальных классов. У меня STILL есть задержка при нажатии кнопки символа (кнопка "вы"). С таким минимальным примером я проиграл тому, что может быть неправильно. Я загрузил это на Google Drive, чтобы кто-нибудь мог взглянуть.
https://drive.google.com/open?id=17A-PB2517bPJc8Dek-yp2wGXsjTyTj1d