讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 16.7 動畫 >

16.7 動畫

利用計算機圖形做動畫時,移動一個東西要完成兩個步驟。

1. 在新的位置上畫出圖形。

2. 把原來的圖形擦掉。

我們已經看到了第一部分。在新的位置畫出了球。現在必須將原先位置的球擦掉。不過「擦掉」到底是什麼意思?

擦掉圖像

如果在紙上或黑板上畫畫,可以很容易地擦掉,只需要一塊橡皮或一個黑板擦,對嗎?不過,如果畫的是一幅水彩畫呢?假設你在畫一幅藍天的水彩畫,然後在藍天裡畫上一隻鳥。你怎麼把這隻鳥「擦掉」呢?水彩是擦不掉的。你必須在鳥所在的位置上用水彩畫上新的藍天。

計算機圖形就像水彩畫,而不像鉛筆畫或粉筆畫。要「擦掉」某個東西,你實際要做的是把它「蓋住」。但是用什麼來蓋住呢?對於藍天水彩畫,天是藍的,所以要用藍色來覆蓋小鳥。我們的背景是白色的,所以必須用白色覆蓋沙灘球原來的圖像。

讓我們來試試看。按照代碼清單 16-12 修改代碼清單 16-11 中的程序。這裡只需要增加一行新代碼。

代碼清單 16-12 再來移動沙灘球

我們增加了第 10 行,在第一個沙灘球上畫了一個白色矩形。沙灘球圖形大約 90 像素寬 90 像素高,所以白色矩形的大小就是 90 像素寬、90 像素高。如果運行代碼清單 16-12 中的程序,看起來沙灘球會從它原來的位置移到新位置。

底下有什麼

用我們的白色背景(或水彩畫中的藍天)覆蓋是很容易的。不過如果在一個有雲的天空裡畫了一隻鳥,又怎麼辦呢?或者如果背景上有樹呢?這種情況下,就必須用雲或樹覆蓋鳥來把它擦掉。這裡的重點是:你必須知道背景上有什麼,也就是在你的圖像「底下」是什麼,因為移動圖像時,必須放回或者重繪這個位置上原來的背景。

對於我們的沙灘球例子來說,這相當容易,因為背景只有白色。不過如果背景是一個沙灘場景,就會困難得多。不只是塗上白色,我們必須畫出正確的背景圖像部分。還有一個選擇是重繪整個場景,然後把沙灘球放在它的新位置上。