Dúvida background em Graphics2D e chamar imagem por URL

2 respostas
el_loko_pepe

Estava fazendo esse tutorial aqui pra criar um alien invaders em java: http://www.cokeandcode.com/node/6

Fui fazer algumas modificações no código e tive alguns problemas...

Primeiro, tentei inserir um background de várias maneiras mas não funciona, o eclipse também não acusa erro.Meu código é o seguinte: Carregando 'Img1' na classe principal:
private Image Img1 = Toolkit.getDefaultToolkit().getImage("http://img40.imageshack.us/img40/6543/51452588.gif");

Tentando chamar ela no loop:

public void gameLoop() {
		long lastLoopTime = System.currentTimeMillis();
		
		while (gameRunning) {
			long delta = System.currentTimeMillis() - lastLoopTime;
			lastLoopTime = System.currentTimeMillis();
			
		
			Graphics2D g = (Graphics2D) strategy.getDrawGraphics();

			g.setColor(Color.black);
			g.fillRect(0,0,800,600); 
			//não funcionou
			g.drawImage(Img1, 800, 600, null);

A segunda dúvida, como quero rodar ele numa XML, preciso carregar os Sprites de URLs da web, segundo o autor do tutorial a classe SpriteStore já estaria pronta pra isso, porém quando tento o eclipse da esse erro:
[color=red]Can't find ref: http://img101.imageshack.us/img101/9447/alienvx.gif[/color]

O código da classe:
public Sprite getSprite(String ref) {
		if (sprites.get(ref) != null) {
			return (Sprite) sprites.get(ref);
		}
		
		BufferedImage sourceImage = null;
		
		try {
			URL url = this.getClass().getClassLoader().getResource(ref);

			
			if (url == null) {
				fail("Can't find ref: "+ref);
			}
			
			sourceImage = ImageIO.read(url);
		} catch (IOException e) {
			fail("Failed to load: "+ref);
		}
Como a ref(referencia) vem:
Entity alien = new AlienEntity(this,"http://img101.imageshack.us/img101/9447/alienvx.gif",100+(x*40),(30)+row*30);

2 Respostas

will702

Olha,não consegui entender completamente sua dúvida.Poste mais detalhes por favor.
Pelo pouco que entendi creio que você precise criar uma variável URL desta forma:

URL img = new URL("http://img40.imageshack.us/img40/6543/51452588.gif");

Mas me explique melhor para saber se posso ajudar.

el_loko_pepe

A classe Sprite desenha o sprite com o auxilio da classe SpriteStore que pega uma imagem como referência;

A referência(ref) é essa aqui:
Entity alien = new AlienEntity(this,"http://img101.imageshack.us/img101/9447/alienvx.gif",100+(x*40),(30)+row*30);

Já que um objeto AlienEntity é (Game game,String ref,int x,int y)

Segundo o autor do tutorial: "The retrieved URL will point to the image specified in the string "ref" relative to the classpath."

Então o trecho da classe SpriteStore que carrega a imagem de uma URL é sse:
try {  
           URL url = this.getClass().getClassLoader().getResource(ref);  
 
            
           if (url == null) {  
               fail("Can't find ref: "+ref);              }                
           sourceImage = ImageIO.read(url);  
       } catch (IOException e) {  
           fail("Failed to load: "+ref);  
    }

Mas por algum motivo está voltando "[color=red]Can't find ref[/color]"

PS:O código completo está no link que eu passei no primeiro post logo no início.

---------------------------------------------------------------------------------------------------
----------------EDIT-----------------------------------------------------------------------------

Já resolvi a questão do URL mas ainda não consegui colocar o background no jogo.

Criado 4 de abril de 2011
Ultima resposta 4 de abr. de 2011
Respostas 2
Participantes 2