私が抱えている問題はImageIO
、JAVAのアプレットビューアでクラスで参照している画像が表示されないことです。私はオンラインでチュートリアルをフォローしていましたが、著者からの返信はまだありません。彼のページにも同様の質問があり、彼は答えなかったので、彼は自分でそれを理解しようとしていると思います。
これが私がこれまでに持っているものです。
import java.applet.Applet;
import java.awt.Graphics;
public class SuperheroGame extends SuperHeroGameLoop{
/**
*
*/
private static final long serialVersionUID = 1L;
public void init () {
setSize(320,240);
Thread th = new Thread(this) ;
th.start();
offscreen = createImage(320,240);
d = offscreen.getGraphics();
addKeyListener(this);
}
public void paint (Graphics g) {
d.clearRect(0, 0, 320, 240);
d.drawImage(background, 0, 0, this);
d.drawImage(w2, x,y, this);
//d.drawImage(foreground, 0, 0, this);
//g.drawImage(offscreen, 0, 0, this);
}
public void update(Graphics g) {
paint(g);
}
}
以下は、コードにネストされた関数の大部分を含む私のTesterクラスです。
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class SuperHeroGameLoop extends Applet implements Runnable, KeyListener {
/**
*
*/
private static final long serialVersionUID = 1L;
public int x,y;
public Image offscreen;
public Graphics d;
public boolean up, down, left, right;
public BufferedImage background, foreground, w1, w2, w3, w4;
public void run() {
x = 100;
y = 100;
try {
//background = ImageIO.read(new File ("background.png"));
//foreground = ImageIO.read(new File ("foreground.png"));
w1 = ImageIO.read(new File("red copy.png"));
w2 = ImageIO.read(new File("red copy.png"));
w3 = ImageIO.read(new File("red copy.png"));
w4 = ImageIO.read(new File("red copy.png"));
} catch (IOException e1) {
e1.printStackTrace();
}
while(true) {
if (left == true) {
x-=2;
}
if (right == true) {
x+=2;
}
if (up == true) {
y-=2;
}
if (down == true) {
y+=2;
}
repaint();
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == 37) {
left = true;
}
if (e.getKeyCode() == 39) {
right = true;
}
if (e.getKeyCode() == 38) {
up = true;
}
if (e.getKeyCode() == 40) {
down = true;
}
}
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == 37) {
left = false;
}
if (e.getKeyCode() == 39) {
right = false;
}
if (e.getKeyCode() == 38) {
up = false;
}
if (e.getKeyCode() == 40) {
down = false;
}
}
public void keyTyped(KeyEvent e) {
}
}
ヘルプやフィードバックをいただければ幸いです。