修复使用image()时出现的nullpointer异常;正在处理中



我试图用两个图像为游戏绘制一个棋盘,但当我调用创建它的函数时,我收到了一个空指针异常。

final int NUM_TILES = 4;
PImage image1, image2;
PImage [][] imageShown;
PImage [][] board;
int sqSide;
float randValue = random(1,2);

void setup(){
size(500, 500);
sqSide = width/NUM_TILES;
imageShown = new PImage[NUM_TILES][NUM_TILES];
board = new PImage[NUM_TILES][NUM_TILES];
image1 = loadImage("helloseal.jpg");
image2 = loadImage("very-rotund.jpg");
displayPuzzle();

}
void draw(){

}

void displayPuzzle(){
for(int i=0; i<NUM_TILES; i++){
for(int j=0; j<NUM_TILES; j++){
image(board[i][j], j*sqSide, i*sqSide);
}
}    
}

您必须初始化元素board。在开头,所有元素都为空。为嵌套循环中的每个元素指定一个图像。例如:

void setup(){
size(500, 500);
sqSide = width/NUM_TILES;
imageShown = new PImage[NUM_TILES][NUM_TILES];

board = new PImage[NUM_TILES][NUM_TILES];
image1 = loadImage("helloseal.jpg");
image2 = loadImage("very-rotund.jpg");
for(int i=0; i<NUM_TILES; i++){
for(int j=0; j<NUM_TILES; j++){
board[i][j] = image;
}
}   
}

displayPuzzle必须在draw中调用,而不是在setup:中调用

void draw(){
displayPuzzle();
}

最新更新