Я создаю игру, чтобы управлять кадрами и т. Д., Я использую AnimationTimer, однако я думаю, что когда я опускаюсь ниже 60 FPS, он просто начинает сильно отставать, делая игру очень медленной.
Как я могу исправить эту проблему, пожалуйста?
Я пробовал много вещей, ничего не решающего.Например, я обнаружил в другой теме, что, возможно, использование System.setProperty("quantum.multithreaded", "false");
было решением, но не в моем случае.
Я использую IntelliJ для запуска своего проекта, поэтому Java 1.8 установлена как SDK в структуре проекта, если я не ошибаюсь, то это Java SDK 8.
Вот код:
import java.awt.GraphicsEnvironment;
import controleur.GameManager;
import controleur.SoundManager;
import javafx.animation.AnimationTimer;
import javafx.application.Application;
import javafx.stage.Stage;
import vue.Vue;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
System.setProperty("quantum.multithreaded", "false");
// Framerate
int FPS = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].getDisplayMode().getRefreshRate();
long nbSecPerFrame = Math.round(1.0/FPS * 1e9);
GameManager.initEtats();
SoundManager.setVolumes(0.33);
Vue vue = new Vue();
primaryStage = vue.initStage(primaryStage);
//Ce compteur va appeler handle à chaque frame, et handle va demander au GameManager de mettre à jour l'ensemble.
AnimationTimer timer = new AnimationTimer() {
private long lastFrame = 0;
@Override
public void handle(long now) {
if ((now - lastFrame)*2 > nbSecPerFrame) {
GameManager.update();
lastFrame = now;
}
}
};
timer.start();
primaryStage.setResizable(false);
primaryStage.show();
}
public static void main(String[] args) {launch(args);}
}
Спасибо
РЕДАКТИРОВАТЬ: На случай, если это может быть связано с Linux, я использую KDE Neon, Ubuntu 18.04