hallo ich hab ein problem, und zwar schaffe ich es nicht mein BufferedImage in ein VolatileImage zu casten. Ich will ganz gerne, dass mein BufferedImage-array list in mein zukünftiges globales VolatileImage-array background gecastet wird. so wie der code jetzt ist funktioniert er auch.
hier mal ein wenig code (in zeile 43 brauche ich hilfe):
hier mal ein wenig code (in zeile 43 brauche ich hilfe):
Code:
import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
public class BackgroundManager{
private int windowWidth;
private int windowHeight;
private int imageWidth;
private int number = 0;
private BufferedImage[] background; //das soll zu VolatileImage[] background gemacht werden
public BackgroundManager(int windowWidth, int windowHeight, String backgroundURL) {
this.windowHeight = windowHeight;
this.windowWidth = windowWidth;
BufferedImage background;
BufferedImage[] list;
try{
background = ImageIO.read(getClass().getClassLoader().getResource(backgroundURL));
imageWidth = background.getWidth();
number = background.getWidth() / 100;
if(background.getWidth()%number > 0){
list = new BufferedImage[number+1];
list[number] = background.getSubimage(number*100, 0, imageWidth%100, background.getHeight());
}
else{
list = new BufferedImage[number];
}
for(int cnt = 0; cnt < number; cnt++){
list[cnt] = background.getSubimage(cnt*100, 0, 100, background.getHeight());
}
this.background = list; //hier sitzt der knackpunkt
}
catch(Exception e){
System.out.println(e.toString());
}
}
public void draw(Graphics dbg, Screen screen){
int posn = screen.x/imageWidth/2;
int cnt = posn;
int cntEnd = 11 + posn;
while(cnt < cntEnd){
cnt++;
try{
dbg.drawImage(this.background[(screen.x/100 + cnt)%(number+1)], -screen.x%100+cnt*100-100+((screen.x/100 + cnt)/(number+1)*(1-background[number].getWidth())), 0, null);
}
catch(Exception e){
System.out.println(e.toString());
}
}
}
}