Итак, я пытаюсь сделать 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();
}
}