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();
    }
}
4

1 回答 1

1

您的课程不从任何东西扩展,因此this.getBufferStrategy()在您课程的上下文中不存在。

尝试从java.awt.Canvas改为

话虽如此,要小心混合重量级和重量级的组件,它们往往不能很好地结合在一起。

我也会避免Toolkit.getScreenSize(),因为它没有考虑屏幕上可能出现的任何“附加”元素(如任务栏)。

您“可以”frame.setExtendedState(MAXIMIZED_BOTH);改用...

于 2013-12-09T22:46:04.097 回答