2013-12-01 8 views
0

Ive следовало вместе с учебником, чтобы сделать 2d-игру. Я дошел до создания окна и раскрашивал его, установив ввод с клавиатуры, но теперь пытаюсь импортировать изображение. В этом видео, http://www.youtube.com/watch?v=o7pfq0W3e4I, похоже, что у всех остальных такая же проблема. строка кода в главном классе:Не можете найти изображение

private SpriteSheet spriteSheet = new SpriteSheet("/spritesheet.png"); 

код класса SpriteSheet:

package GFX; 

import java.awt.image.BufferedImage; 
import java.io.IOException; 

import javax.imageio.ImageIO; 

public class SpriteSheet { 

public String path; 
public int width; 
public int height; 

public int[] pixels; 

public SpriteSheet(String path){ 
    BufferedImage image = null; 

    try { 
     image = ImageIO.read(SpriteSheet.class.getResourceAsStream(path)); 
    } catch (Exception e) { 
     System.out.println("Cant find image"); 
    } 

    if(image == null){ 
     return; 
    } 

    this.path = path; 
    this.width = image.getWidth(); 
    this.height = image.getHeight(); 

    pixels = image.getRGB(0,0,width,height,null,0,width); //0xffABCdAs 

    for(int i = 0;i<pixels.length;i++){ 
     pixels[i] = (pixels[i] & 0xff)/64; 
    } 

    for(int i = 0;i<16;i++){ 
     System.out.println(pixels[i]); 
    } 



} 

} 

Я RIED все различно каталоги, даже один, начиная с harddrvie, но все еще ничего, его просто возвращающимся " Cant find image ", как указано в try-catch. Учебные пособия было это как

  try { image = ImageIO.read(SpriteSheet.class.getResourceAsStream(path)); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

это не сработало, и возвращается сообщение об ошибке:

Exception in thread "main" java.lang.IllegalArgumentException: input == null! 
at javax.imageio.ImageIO.read(ImageIO.java:1348) 
at GFX.SpriteSheet.<init>(SpriteSheet.java:20) 
at inputHandling.Game.<init>(Game.java:23) 
at inputHandling.Game.main(Game.java:128) 

Многие люди в комментариях также отправил эту ошибку, и когда я закомментируйте путь в главном классе, программа работает, но не находит изображение. Спасибо.

+0

Проверьте, где ваше изображение находится. Это должно быть на пути к классам. – tjg184

ответ

1

Одно простое исправление будет следующее:

Изменить

private SpriteSheet spriteSheet = new SpriteSheet("/spritesheet.png"); 

в

private SpriteSheet spriteSheet = new SpriteSheet("spritesheet.png"); 

, а затем поместить spritesheet.png в том же пакете Java или папку в качестве класса SpriteSheet.

Class.getResourceAsStream() ищет ресурсы в вашем пути к классам, поэтому, пока изображение находится на пути к классам, оно будет работать.

+0

ugh, наконец. Огромное спасибо. Вы знаете какой-либо способ заставить его работать в отдельной папке, например, в папке «res», которая находится за пределами /bin/game/gfx/spritesheet.png? Большое спасибо! –

Смежные вопросы