我有一个图像数组,当我点击其中一个时,我希望它循环并创建一个模式。 (这部分已经有效)。当我想从我的数组中获取最后点击的图像时,我得到一个'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];
然后循环模式高于我所有其他功能。我希望它在那之下。
答案 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()
告诉它。