我有一个 2d 游戏,除了图形之外,整个结构都是完全编码的。我只是更新 JFrame 的单个组件,它是一个包含 50 个图像的 Graphic。每帧图像都位于不同的位置,因此需要刷新率。
为了绘制,我重写了 PaintComponent() 方法,因此我真正需要做的就是每 40 毫秒重新绘制该组件(同样,它只是一个 Graphic)。
如何设置 25FPS 的 JFrame?
刷新 JFrame 不是一个好主意。它是 Swing 中为数不多的重型组件之一。最好的方法是
\n\n你的标题有误导性,你做的是对的。
\n\n/** Thread running the animation. */\nprivate class Runner extends Thread\n{\n /** Wether or not thread should stop. */\n private boolean shouldStop = false;\n /** Pause or resume. */\n private boolean pause = false;\n\n /** Invoke to stop animation. */\n public void shouldStop() {\n this.shouldStop = true;\n }//met\n\n /** Invoke to pause. */\n public void pauseGame() { pause = true; }//met\n /** Invoke to resume. */\n public void resumeGame() { pause = false; }//met\n\n /** Main runner method : sleeps and invokes engine.play().\n * @see Engine#play */\n public void run()\n {\n while( !shouldStop )\n {\n try {\n Thread.sleep( 6 );\n } catch (InterruptedException e) {\n // TODO Auto-generated catch block\n e.printStackTrace();\n }//catch\n if( !pause )\n {\n engine.play();\n gamePane.repaint();\n\n }//if\n }//while\n }//met\n\n /** Wether or not we are paused. */\n public boolean isPaused() {\n return pause;\n }//met\n}//class Runner (inner)\nRun Code Online (Sandbox Code Playgroud)\n\n你的动画将会更加流畅。并使用MVC和事件来刷新UI的其他部分。
\n\n问候,\n St\xc3\xa9phane
\n| 归档时间: |
|
| 查看次数: |
13404 次 |
| 最近记录: |