2011-12-27 2 views
0

Ну, я пытаюсь сделать графическую игру в первый раз, но:getSubimage бросает NullPointerException по неизвестной причине

BufferedImage tileset = null; 
try{ 
    tileset = ImageIO.read(new File("sets/tiles.png")); 
} 
catch(IOException e){ 
    System.out.println(e.toString()); 
} 
MwatRoot.allTiles[0].tile = tileset.getSubimage(0, 0, 32, 32); 
MwatRoot.allTiles[1].tile = tileset.getSubimage(0, 32, 32, 32); 

это бросает NullPointerException:

MwatRoot.allTiles[0].tile = tileset.getSubimage(0, 0, 32, 32); 
MwatRoot.allTiles[1].tile = tileset.getSubimage(0, 32, 32, 32); 

это является allTiles:

public static TileClass[] allTiles = new TileClass[2]; 

и TileClass:

public class TileClass { 
    public BufferedImage tile; 
    public boolean BlocksMovement; 
} 

Может кто-нибудь объяснить мне, почему это происходит? Я уже проверил, плитка не равна нулю.

+1

Пожалуйста, пост трассировки стека. Однако, используя мой ESP, я собираюсь предположить, что 'MwatRoot' является' null' (если это статический класс, игнорируйте комментарий. Если не использовать верхний регистр для имен переменных) или 'MwatRoot.allTiles [0]' или 'MwatRoot.allTiles [1]' is 'null' –

ответ

3
public static TileClass[] allTiles = new TileClass[2]; 

Это неверно инициализирует массив.

Вы должны добавить после него следующее:

allTiles[0] = new TileClass(); 
allTiles[1] = new TileClass(); 
+0

О, это была проблема! Спасибо! – Tarc

+0

@Tarc: не забудьте как проголосовать за ответ Аделя (как я уже сделал), так и «принять» его, нажав на галочку слева от нее. –

+0

@Tarc Пожалуйста, отметьте этот ответ и примите его. В противном случае люди будут продолжать здесь отвечать. –

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