为什么FPS不在我的窗口打印?

时间:2015-07-26 18:09:43

标签: java loops printing window

我相信一旦我启动这个程序,FPS就会打印在新窗口的某个地方。我看到了窗口,但FPS没有显示在窗口中。有什么问题?

public class Game extends Canvas implements Runnable {
  private static final long serialVersionUID = 1L;

  public static final int WIDTH = 640, HEIGHT = WIDTH / 12 * 9;
  private Thread thread;
  private boolean running = false;

  public Game() {
    new Window(WIDTH, HEIGHT, "MY GAME", this);
  }

  public synchronized void start() {
    thread = new Thread(this);
    thread.start();
    running = true;
  }

  public synchronized void stop() {
    try {
      thread.join();
      running = false;
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public void run() {
    long lastTime = System.nanoTime();
    double amountOfTicks = 60.0;
    double ns = 1000000000 / amountOfTicks;
    double delta = 0;
    long timer = System.currentTimeMillis();
    int frames = 0;
    while (running) {
      long now = System.nanoTime();
      delta += (now - lastTime) / ns;
      lastTime = now;
      while (delta <= 1) {
        delta--;
      }
      if (running)
        frames++;

      if (System.currentTimeMillis() - timer > 1000) {
        timer += 1000;
        System.out.println("fps: " + frames);
        frames = 0;
      }
    }
    stop();
  }

  public static void main(String args[]) {
    new Game();
  }
}

1 个答案:

答案 0 :(得分:1)

本教程可能意味着fps将打印到也在作者开发环境中打开的某个控制台窗口。 System.out.println仍会打印到标准输出,除非您使用setOut进行更改并编写一些其他代码,然后在Window中的某个位置放置或绘制GUI组件中的文本。