ゲームを作成していて、背景と主人公が読み込まれていません。私は、変数を宣言するのはここです:私は、画像を取得する場所画像がキャンバスに表示されない(Java)
private BufferedImage background;
private BufferedImage player;
ここにあります:
public void render() {
BufferStrategy bs = this.getBufferStrategy();
if (bs == null) {
createBufferStrategy(3);
return;
}
Graphics g = bs.getDrawGraphics();
g.drawImage(background, 0, 0, this);
g.drawImage(player, 0, 0, this);
g.dispose();
bs.show();
}
ここに私のクラス全体だ:
public class Main extends Canvas implements Runnable, KeyListener {
Thread t;
boolean running = false;
private BufferedImage background;
private BufferedImage player;
public Main() {
setFocusable(true);
requestFocus();
addKeyListener(this);
try {
background = ImageIO.read(this.getClass().getResourceAsStream("/res/Background.jpg"));
player = ImageIO.read(this.getClass().getResourceAsStream("/res/Player.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run() {
while (running) {
tick();
render();
}
stop();
}
synchronized void start() {
if (running) return;
running = true;
Thread t = new Thread();
t.start();
}
synchronized void stop() {
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.exit(0);
}
public void render() {
BufferStrategy bs = this.getBufferStrategy();
if (bs == null) {
createBufferStrategy(3);
return;
}
Graphics g = bs.getDrawGraphics();
g.drawImage(background, 0, 0, this);
g.drawImage(player, 0, 0, this);
g.dispose();
bs.show();
}
public void tick() {
}
@Override
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
if (code == KeyEvent.VK_ESCAPE) {
System.exit(0);
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
JFrame f = new JFrame("Mission Sahara");
Main m = new Main();
f.add(m);
f.setExtendedState(JFrame.MAXIMIZED_BOTH);
f.setUndecorated(true);
f.setResizable(false);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
m.start();
}
try {
background = ImageIO.read(this.getClass().getResourceAsStream("/res/Background.jpg"));
player = ImageIO.read(this.getClass().getResourceAsStream("/res/Player.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
は、ここに私の方法をレンダリングします
}
私のコードで何が問題になっていますか?多くのことを行うことはありません
あなたのstart
方法で
Thread
"空" を作成している
は、[実行可能な例](https://stackoverflow.com/help/mcve)を提供することを検討実装しているのでこれはあなたの問題を示しています。これはコードダンプではありませんが、あなたがしていることの例はあなたが持っている問題を強調表示します。これにより混乱が少なくなり、より良い応答が得られます – MadProgrammer