2015-06-21 38 views
-1

问题:我有一个程序,它涉及将一个条(如砖块中断)从一边移到另一边。问题是它在Eclipse中运行时以不同的速度移动,而不是导出到桌面。Eclipse程序的运行速度比导出后的要快

研究:

当读这一点,让我觉得,我可能无法正确创造我的差值这可以解释为什么它运行在不同的速度。 my computer is carrying out java programs which i have created to fast [closed]

阅读这篇文章后,我发现,也许的Eclipse编译器只是更快这可能会导致在速度的差异。 Application runs faster in eclipse

// run() is being ran with a while(true) game loop 
    public void run(Input input) 
    { 
     init(); 
     // Ran at 60 FPS 
     if(fps.tick()) 
       render(); 
     // Ran as fast as possible 
     update(input); 
    } 

    private void render() 
    { 
     start = System.nanoTime();  

     if(render.getGraphics() != null) 
     { 
      Graphics g = render.getBS().getDrawGraphics(); 
      g.drawImage(new BufferedImage(Reference.WIDTH*Reference.SCALE, Reference.HEIGHT*Reference.SCALE, 
       BufferedImage.TYPE_INT_RGB), 0,0, AppGameContainer.canvas); 
      activeState.render(render.getGraphics(), AppGameContainer.canvas); 
      render.getGraphics().dispose(); 
      render.getBS().show(); 
     } 
     end = System.nanoTime(); 

     // Time in ms 
     delta = (end-start)/1000000.0; 
    } 

我如果有兴趣视频对这个问题的可视化表示:Video of issue

+0

禁用任何节流(fps.tick()),看看它是否仍然较慢。如果不是,你的代码就是问题所在。 – tilpner

+0

另外,你真的需要每次init()吗? – tilpner

+0

如果init方法已经完成,则返回该方法,并且不会初始化每个迭代。它是以这种方式设置的,如果它改变游戏状态,它将启动新的游戏状态。 – user1953222

回答

-1
// run() is being ran with a while(true) game loop 
    public void run(Input input) 
    { 
     start = System.nanoTime(); 
     init(); 
     // Ran at 60 FPS 
     if(fps.tick()) 
       render(); 
     // Ran as fast as possible 
     update(input); 
     end = System.nanoTime(); 

     // Time in ms 
     delta = (end-start)/1000000.0; 
    } 

    private void render() 
    {  
     if(render.getGraphics() != null) 
     { 
      Graphics g = render.getBS().getDrawGraphics(); 
      g.drawImage(new BufferedImage(Reference.WIDTH*Reference.SCALE, Reference.HEIGHT*Reference.SCALE, 
       BufferedImage.TYPE_INT_RGB), 0,0, AppGameContainer.canvas); 
      activeState.render(render.getGraphics(), AppGameContainer.canvas); 
      render.getGraphics().dispose(); 
      render.getBS().show(); 
     } 
    } 
相关问题