Я работаю над своей пустой игрой, и я начинаю добавлять к ней приключенческую сторону, но она не работает.У меня было там, где он мерцал и выключался, но когда я начал больше работать над ним, он начал не работать.
Вот код с резьбой:
thread = new Thread(this);
IH = new ImageHandler(this);
listener = new Listener(this);
removeEntity = new ArrayList<>();
addEntity = new HashMap<>();
frame = new JFrame("IDLE");
frame.add(this);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.setResizable(false);
frame.setUndecorated(true);
frame.addWindowListener(listener);
frame.addMouseListener(listener);
frame.addMouseMotionListener(listener);
frame.addKeyListener(listener);
frame.pack();
Image bgBase = IH.getImg("background");
frame.setVisible(true);
WIDTH = frame.getWidth();
HEIGHT = frame.getHeight();
background = IH.getBG();
adv = new Adventures(this);
//Stuff here to load in the variables and entity data
start();
Итак, вот мой старт и остановка:
private synchronized void start() {
thread.start();
}
public synchronized void stop() {
save();
frame.setVisible(false);
try {
thread.join();
} catch(InterruptedException e) {
e.printStackTrace();
}
System.exit(1);
}
А теперь мой класс "run" (из-за темы):
public void run() {
long lastTime = System.nanoTime();
final double ns = 1000000000.0 / 60.0;//60 times per second
double delta = 0;
requestFocus();
while(frame.isVisible()) {
long now = System.nanoTime();
delta = delta + ((now-lastTime) / ns);
lastTime = now;
while (delta >= 1)//Make sure update is only happening 60 times a second
{
//handles all of the logic restricted time
update();
delta--;
}
this.repaint();//displays to the screen unrestricted time
}
}
Если вам нужно больше кода, пожалуйста, дайте мнезнаю!