Метод getBufferStrategy () из компонента Component не отображается - PullRequest
0 голосов
/ 04 октября 2018

Итак, я пытаюсь сделать 2d игру с использованием Java, я создал такие игры, прежде чем использовать стандартный метод тик и рендеринга (с BufferStrategy).

Но при запуске появляется эта ошибка:

"Метод getBufferStrategy () из типа Component не отображается"

искал по всему интернету и проверял мой предыдущий код на предмет различий, но не смог найти ответ.

Заранее спасибо, я ценю любую помощь, которую я могу получить <3 </p>

ошибка:

public void render(){
    BufferStrategy bs = this.getBufferStrategy();  //<--This is where the error is found

    Graphics g = bs.getDrawGraphics();
    Graphics2D g2d = (Graphics2D) g;
    handler.render(g);

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

Вот остаток моего кода от Game.java:

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferStrategy;

import javax.swing.JPanel;

public class Game extends JPanel implements Runnable{

    private static final long serialVersionUID = 1L;

    public static final int width = 1024, height = 576;

    private boolean running = false;
    private Thread thread;
    private Handler handler;


    public Game(){
        handler = new Handler();
        new Frame(width, height, "My Game :)", this);

        Start();

        handler.addObject(new Background(0, 0, width, height, ID.Hud));
        handler.addObject(new Ball(675, 0, 30, 30, ID.Ball, handler));
        handler.addObject(new Paddle(width-50,height/2-38,10,50,ID.PaddleB));

        this.addKeyListener(new KeyInput(handler));

    }

    private void Start(){
        running = true;
        thread = new Thread(this);
        thread.start();
    }

    private void Stop(){
        running = false;
        try {
            thread.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public void run(){
        this.requestFocus();
        long lastTime = System.nanoTime();
        double amountOfTicks = 60.0;
        double ns = 1000000000 / amountOfTicks;
        double delta = 0;
        long timer = System.currentTimeMillis();
        long now;
        int frames = 0;
        while (running) {
            now = System.nanoTime ();
            delta += (now - lastTime) / ns;
            lastTime = now;
            while (delta >= 1) {
                tick();
                delta--;
            }
            render();
            frames++;
            if (System.currentTimeMillis () - timer > 1000) {
                timer += 1000;
                System.out.println(frames);
                frames = 0;
            }
        }
    }

    public void tick(){
        handler.tick();
    }


    public void render(){
        BufferStrategy bs = this.getBufferStrategy();  //<--This is where the error is found

        Graphics g = bs.getDrawGraphics();
        Graphics2D g2d = (Graphics2D) g;
        handler.render(g);

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

    public static void main(String args[]) throws InterruptedException{
        new Game();
    }
}
...