…aber input ist nicht null, das ist das Problem, wenn ich ein BufferedImage laden will.
Socius.java liegt im verzeichnis c:/Java/Socius/src/Java/Soc/
Die Bilder im Verzeichnis c:/Java/Socius/src/Java/Soc/textures/animation/
package Java.Soc;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.ListIterator;
import java.util.Vector;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Socius extends JPanel implements Runnable, MouseListener{
public static void main(String[] args){
new Socius(800, 600);
}
JFrame f;
Thread t;
BufferedImage[] laf;
Sprite spieler;
Vector<Sprite> actors;
Vector<Sprite> painter;
long delta = 0;
long last = 0;
long fps = 0;
int klickx;
int klicky;
String FPS = "FPS: "+Long.toString(fps);
private int spPosaktX;
private int spPosaktY;
private boolean klick;
private static final long serialVersionUID = 1L;
Socius(int w, int h){
this.setPreferredSize(new Dimension(w,h));
this.setBackground(Color.BLACK);
f = new JFrame("Socius");
f.setLocation(100,100);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this);
f.setBackground(Color.BLACK);
f.pack();
f.setVisible(true);
t = new Thread(this);
f.addMouseListener(this);
t.start();
laden();
}
private void laden() {
actors = new Vector<Sprite>();
painter = new Vector<Sprite>();
laf = new BufferedImage[2];
try {
laf[0] = ImageIO.read(Socius.class.getResource("textures/animation/a1.png"));
laf[1] = ImageIO.read(Socius.class.getResource("textures/animation/a2.png"));
laf[2] = ImageIO.read(Socius.class.getResource("textures/animation/a3.png"));
} catch (IOException e) {
e.printStackTrace();
}
spieler = new Sprite(laf, 500, 300, 100, this);
actors.add(spieler);
}
@Override
public void run() {
while(f.isVisible()){
doLogic();
bewegen();
cloneVectors();
computeDelta();
if(klick){
checkKlicks();
}
System.out.println(FPS);
try{
Thread.sleep(1000);
} catch(InterruptedException ie){
System.out.println(ie);
}
}
}
private void checkKlicks() {
spPosaktX = spPosaktX + 50;
spPosaktY = spPosaktY + 50;
System.out.println(klickx + " " + klicky);
klick = false;
}
@SuppressWarnings("unchecked")
private void cloneVectors() {
painter = (Vector<Sprite>) actors.clone();
}
private void bewegen() {
for(ListIterator<Sprite> it = actors.listIterator();it.hasNext();){
Sprite r = it.next();
r.move(delta);
}
}
@Override
protected void paintComponent(Graphics g){
for(ListIterator<Sprite> it = painter.listIterator();it.hasNext();){
Sprite r = it.next();
r.drawObjects(g, spPosaktX, spPosaktY);
}
}
private void computeDelta() {
delta = System.nanoTime() - last;
last = System.nanoTime();
fps = ((long) 1e9)/delta;
}
private void doLogic() {
for(ListIterator<Sprite> it = actors.listIterator();it.hasNext();){
Sprite r = it.next();
r.doLogic(delta);
}
}
@Override
public void mouseClicked(MouseEvent e) {
klickx = e.getX();
klicky = e.getY();
klick = true;
}
@Override
public void mouseEntered(MouseEvent arg0) {
}
@Override
public void mouseExited(MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
}
@Override
public void mouseReleased(MouseEvent arg0) {
}
}
Danke für eure Hilfe!