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 に答える