私はJavaで描かれた画像を取得するのに問題があります。コンソールエラーはなく、 '描画'が印刷されます。私はイメージを間違って読み込んでいると信じていますが、正しい方法を理解することはできません。誰かが私に偉大な正しい方法を教えてくれたら。jframe gameの画像を描画する
package platformer;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.util.List;
import java.util.ArrayList;
import javax.swing.Timer;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import java.awt.Image;
public class test2 extends JPanel implements KeyListener, ActionListener {
int Width = 1000;
int Height = 600;
private static Image offScreenBuffer;// needed for double buffering graphics
private Graphics offScreenGraphics;// needed for double buffering graphics
private BufferedImage[] img = new BufferedImage[1];
public test2() {
}
public void paint(Graphics g) {
super.paint(g);
g.drawImage(img[0],0,0,null);
}
public void timer1() {
int delay = 30; // milliseconds
new Timer(delay, this).start();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent evt) {
}
public static void main(String args[]) throws InterruptedException, Exception {
test2 test2 = new test2();
JFrame frame = new JFrame("platformer");
frame.setSize(test2.Width, test2.Height);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setBackground(Color.green);
frame.add(test2);
frame.setResizable(false);
frame.addKeyListener(test2);
test2.init();
test2.timer1();
// What to do after the program starts
while (true) {
test2.repaint();
}
}
public void init() {
try {
URL url = new URL("platform.png");
img[0] = ImageIO.read(url);
} catch (IOException e) {
}
}
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
}
これはあなたの質問には答えませんが、イメージが1つしかないので、配列は必要ありません。ちょうど '私のイメージimg;'をしてください。 –
また、数字で終わる名前を避けることをお勧めします。クラス名はもっと意味があるはずです。変数名を数値で終わらせる場合、本当に 'List'か'配列が必要です。 –
あなたがここに投稿したコードは、あなたのゲームに関係するすべての余分なものによって複雑になります。画像をロードして表示するだけの例として別のクラスを作成することをお勧めします。それでも問題が解決しない場合は、簡単なバージョンでこの質問を編集してください。 –