我在这里得到一个古怪的错误。
PImage img;
PImage img2;
PImage img3;
PImage img4;
PImage img5;
PImage img6;
PImage img7;
PImage img8;
PImage img9;
PImage img10;
int count;
int regionHeight;
int regionWidth;
ArrayList images;
void setup(){
//Image of bottle
images = new ArrayList();
img = loadImage("IMG_3763.JPG");
images.add(img);
img2 = loadImage("IMG_3764.JPG");
images.add(img2);
img3 = loadImage("IMG_3765.JPG");
images.add(img3);
img4 = loadImage("IMG_3766.JPG");
images.add(img4);
img5 = loadImage("IMG_3767.JPG");
images.add(img5);
img6 = loadImage("IMG_3768.JPG");
images.add(img6);
img7 = loadImage("IMG_3769.JPG");
images.add(img7);
img8 = loadImage("IMG_3770.JPG");
images.add(img8);
img9 = loadImage("IMG_3771.JPG");
images.add(img9);
img10 = loadImage("IMG_3772.JPG");
images.add(img10);
size(img.width, img.height);
println(img.width);
}
void draw(){
println(images.get(0).width);
}
似乎我放入数组的任何图像都是PImages,这就是为什么我可以在setup()中获得img.width,但是当我尝试对images.get(index)做同样的事情时,它会返回一个Object但该Object不是PImage。我不确定为什么类型已经改变了,我的理解是ArrayList就像一个带有一些额外功能的动态数组。它应该返回一个PImage对象,但是处理不会这样对待它。我用不同的函数验证了这一点,试着更多地阅读返回的内容,但它确实看起来像是一种不同类型的对象。我错过了什么吗?
谢谢!
答案 0 :(得分:2)
从ArrayList
获取对象时,必须将对象强制转换为PImageprintln((PImage)images.get(0).width);
答案 1 :(得分:0)
ArrayList存储对象,它不知道它存储的对象的派生类型,这就是@bill_automata引用的强制转换修复事物的原因。