【问题标题】:Fixing a nullpointer exception when using image(); in processing修复使用 image() 时的空指针异常;进行中
【发布时间】:2020-10-14 13:01:52
【问题描述】:

我正在尝试使用 2 张图像为游戏绘制棋盘,但在调用创建它的函数时收到空指针异常。

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 已初始化,但还没有图像。那就是(可能,我还没有看到确切的错误消息)你点击那个空值的地方。你如何定义哪个图像在板上的位置?
  • 我以为图片是在设置中加载的。我应该在 displayPuzzle() 方法中定义图像
  • image() 将“绘制”您希望用户看到的图像。到目前为止,您已加载 2 张图片(image1image2),但尚未使用它们。 image() 方法应与 draw() 循环相关使用。

标签: processing


【解决方案1】:

你必须初始化元素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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2019-03-07
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多