最后点击的数组

时间:2014-01-24 10:35:26

标签: arrays processing

我有一个图像数组,当我点击其中一个时,我希望它循环并创建一个模式。 (这部分已经有效)。当我想从我的数组中获取最后点击的图像时,我得到一个'NullPointerException'

PImage[] patronen = new PImage[7];
int pLength = patronen.length;
PImage selectedPatroon = patronen[patronen.length-1];

void setup(){
size(1024, 768);
}

void draw(){
 createPGrid();

image(selectedPatroon, xPos, yPos);
}

void createPGrid(){

for(int j = 0; j < gpLength; j++){
// Grid maanmaken
xPos = xOffset + ((j % cols) * (size+padding));
yPos = yOffset + ((j / cols) * (size+padding));

// Thumbs
patronen[j] = loadImage( j + ".png");
image(patronen[j], xPos, yPos);



// Check if thumb is clicked  
 if((mouseX >= xPos && mouseX <= xPos+size) && 
   (mouseY >= yPos && mouseY <= yPos+size)){ 

  if (mousePressed){
    // grid patronen
    xPos = 0;
    yPos = 0;

    // Loop pattern
    while( yPos < height ){
      while( xPos < width ){
        patronen[j] = loadImage(j + "groot" + ".png");
        selectedPatroon = patronen[j] 

        xPos += 500;
  }
  yPos +=500;
  xPos = 0;     
 }
 rect(xPos, yPos, size, size);
}
}
}
}

编辑:问题是,没有

,它可以完美运行
PImage selectedPatroon = patronen[patronen.length-1];

然后循环模式高于我所有其他功能。我希望它在那之下。

2 个答案:

答案 0 :(得分:0)

您正在代码顶部创建一个数组,然后将图像设置为数组中的最后一个元素,但您不是首先填充数组。

PImage[] patronen = new PImage[7];  <<< Blank 7 element array.
int pLength = patronen.length;
PImage selectedPatroon = patronen[patronen.length-1];

答案 1 :(得分:0)

要回答您在评论中提出的问题,您无法使用PImage填充int个数组,这些是不同的变量类型。在setup()中尝试这样的事情:

PImage patronen = new PImage[7];
for(int i = 0; i < patronen.length; i++){
  patronen[i] = loadImage("image" + i + ".png"); // or whatever format your filenames are
}

loadImage(String name)函数返回一个PImage,因此您可以将其直接插入到数组中。只是尝试插入数字是行不通的,因为计算机不知道数字代表文件名而没有用loadImage()告诉它。