2014-04-21 75 views
0

前注:我現在無法包含我的引擎。我擁有自己的作品,並且我使用了一些教程。抽獎方法每秒調用60次。所以我有我自己的Java Jframe(我創建了一個並設置它的名稱,這就是全部),我使用frame.getGraphics()來獲取Graphics對象。獲取Jframe問題的圖形

在我的方法被稱爲60次persecond我增加一個int,然後我用來繪製圖像。基本上每一秒我增加一個快速graphics.fillRect()的x值。

繪製矩形,但它非常滯後,不光滑。

是否有任何額外的步驟,我需要做,以確保我有一個平滑的jFrame,可以每秒繪製許多圖像?

+2

[不使用'的getGraphics()'](http://stackoverflow.com/questions/15986677/drawing-an-object-using-getgraphics-without-extending-jframe) – Obicere

+0

做什麼我呢? – user3131055

+0

我提供的鏈接顯示了處理渲染的正確方法。 – Obicere

回答

0

我建議在畫框中添加畫布,然後使用畫布的BufferStrategy。

class Game extends Canvas { 

    public static void main(String[] args) { 
      Game game = new Game() 
      //init frame and add canvas 

      while(true) { 
       render(); 
      } 
    } 

    public void render() { 
      BufferStrategy bs = getBufferStrategy(); 
      if(bs == null) { 
       createBufferStrategy(3); //triple buffering 
       return; 
      } 

      Graphics g = bs.getDrawGraphics(); 

      //do what you want with Graphics g 

     g.dispose(); 
     bs.show(); 
    } 
} 
+0

我明白這一點,但是如何將框架連接到bs?基本上你創建一個新的bs,但它的圖形如何知道它是幀圖形? – user3131055

+0

這是您的視頻卡的圖形。你在說什麼?當你有一個框架時,有兩個部分:1.包含標題,最小化按鈕和X按鈕的框架邊界2.可繪製部件是放置組件和繪製圖像的位置。我們沒有使用框架的內容面板來處理圖形(甚至不確定它是否支持緩衝策略),而是使用輕量級的可繪製區域,純粹專注於圖形繪畫而不是組件。我們將畫布添加到框架,並使用畫布進行繪製。有什麼問題? –