0

ここで奇妙なエラーが発生します。

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 が返されますが、そのオブジェクトは PImage ではありません。型が変更された理由がわかりません。ArrayList は、いくつかの追加機能を備えた動的配列のようなものであると理解していました。PImage オブジェクトを返す必要がありますが、処理はそれをそのように扱いません。これをさまざまな関数で検証して、返されるものを詳しく調べてみましたが、実際には異なるタイプのオブジェクトのように見えます。何か不足していますか?

ありがとう!

4

2 に答える 2

2

ArrayList からオブジェクトを取得するときは、オブジェクトを PImage としてキャストする必要があります

println((PImage)images.get(0).width);
于 2012-12-23T05:07:28.947 に答える
0

ArrayList はオブジェクトを格納しますが、格納するオブジェクトの派生型を認識していません。これが、@bill_automata によって参照されるキャストが問題を解決する理由です。

于 2012-12-23T05:10:14.703 に答える