
第 19 章 Processing
206
水滴不斷滴在頭頂…
如果想要很多水滴怎麼辦?例如,每次
點擊滑鼠都要產生一滴新的水滴。您需
要在主草稿碼追蹤所有的水滴,但又不
知道總共有多少滴水,所以無法使用陣
列。在此需要另一個稱為 ArrayList 的資
料結構:它與陣列很相似,但是裡頭的
元素內容可以變動。
要建立水滴清單時,請將 DropTest 草稿
碼最上端的 Drop drop; 這一行改為以下:
ArrayList<Drop> drops =
newAList<Drop>();
因此當您在定義 drops 變數時,不只說明
了它的型態為 AList,您還指定了這個清
單中存放了 Drop 型態的物件。ArrayList
也是種類別,當然會有您可以呼叫的方
法。
您 會 感 興 趣 的 第 一 個 方 法 就 是 add 方
法, 可 讓 您 將 水 滴 加 入 清 單 中:drops.
add(drop)。
搭配 size 方法,您可以指定總共有多少
滴水,並透過常用的 for 迴圈來繪製所有
的雨滴。請
根據以下來修改 DropTest 的
draw 方法:
void draw(){
background(bg_color);
for (int i = 0; i < drops.size(); i++)
{
Drop drop = drops.get(i);
drop.update();
drop.draw();
}
}
您可使用 get 方法來取得第 n 個位置的物
件,將其在清單中位置當作參數;與陣
列一樣,清單的第 ...