2013-12-09 69 views
0

我正在嘗試爲我正在處理的遊戲創建菜單,但是當我嘗試使用GetBufferStrategy時,Eclipse會告訴我創建一個方法。我不想要一種方法。我希望它得到緩衝策略。我對java很陌生,請解釋爲什麼我的代碼是錯誤的,所以我不再重複一遍。它想要我創建一個方法是什麼?

package homeScreen; 
import java.awt.Graphics; 
import java.awt.Toolkit; 
import java.awt.image.BufferStrategy; 
import java.awt.image.BufferedImage; 
import java.io.IOException; 

import javax.swing.JFrame; 

public class homeScreen { 

    static Toolkit tk = Toolkit.getDefaultToolkit(); 
    public static final int WIDTH = (int) tk.getScreenSize().getWidth(); 
    public static final int HEIGHT = (int) tk.getScreenSize().getHeight(); 

    BufferedImageLoader imageLoader = new BufferedImageLoader(); 

    private static homeScreen home = new homeScreen(); 

    private BufferedImage backgroundImage = null; 
    private BufferedImage Buttons = null; 

    public static void main(String args[]){ 
     JFrame frame = new JFrame("Game"); 
     frame.pack(); 
     frame.setSize(WIDTH, HEIGHT); 
     frame.setResizable(false); 
     frame.setLocationRelativeTo(null); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
     home.loadImages(); 
    } 

    private void loadImages() { 
     try { 
      backgroundImage = imageLoader.loadImage("/res/HomeScreen.png"); 
      Buttons = imageLoader.loadImage("/res/MainScreenButtons.png"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     home.display(); 
    } 

    private void display(){ 
     BufferStrategy buffStrat = this.getBufferStrategy(); 
     Graphics g = buffStrat.getDrawGraphics(); 

     if(buffStrat == null){ 
      createBufferStrategy(3); 
      return; 
     } 
     //////////////////////////////////////////////// 

     //////////////////////////////////////////////// 
     g.dispose(); 
     buffStrat.show(); 
    } 
} 

回答

1

您的班級沒有延伸任何東西,因此this.getBufferStrategy()在您班級的環境中不存在。

嘗試從java.awt.Canvas,而不是

延長話雖如此,要小心混合重和輕重量的部件,他們往往沒有發揮得很好。

我也會避免Toolkit.getScreenSize(),因爲它沒有考慮到屏幕上可能存在的任何「額外」元素(如任務欄)。

您「可以」使用frame.setExtendedState(MAXIMIZED_BOTH);代替...

相關問題