如同lineStyle,你可以將rgb, alpha的值預設而使用預設值。它需要配合使用 lineTo 或 curveTo (這個以後將講道) 來定義封閉地區的各個頂點位置(也就是圍成這個封閉地區的線條的交點位置)從而知道這個封閉地區的形狀、大小以及位置。舉一個簡單的例子:
_root.beginFill(0x00FF00);
_root.moveTo(100,100); // this is the origin
_root.lineTo(200,100);
_root.lineTo(200,200);
_root.lineTo(100,200);
這段as將產生一個綠色的正方形,四個頂點的座標分別為:
(100,100);(200,100);(200,200);(100,200)。
我們可以通過定義lineStyle來擴充一下:
on (release) {
_root.lineStyle(0x0000FF);
_root.beginFill(0x00FF00);
_root.moveTo(100,100); // this is the origin
_root.lineTo(200,100);
_root.lineTo(200,200);
_root.lineTo(100,200);
}
這樣就可以得到一個邊框為1像素的藍色的布透明的邊框,其他各項參數不變。
但是,我強烈推薦通過使最後所畫的直線回接到圖形的出發點的方式來封閉填充圖形。有關上面的代碼的另外一個問題是填充是從左開始的,後面每遇到一個lineto 語句都會繼續改變。另外一種可能引起麻煩的情況是,在勾畫填充的代碼中,每加入一個moveto語句都會使原來的填充自動封閉而重新開始一個新的填充。運行下面的代碼來看一下是怎樣的情形, (也就是說但如果你在as中沒有閉合所繪製的路徑的話,程式就會自動的將第一個“點”和最後一個“點”串連起來使得路徑閉合以得到一個封閉的地區。)看如下代碼:
_root.beginFill(0x00FF00);
_root.moveTo(100,100); // 這是原點
_root.lineTo(200,100);
_root.lineTo(200,200);
_root.moveTo(100,200); // 閉合第一個填充地區並且開始一個新的
_root.lineTo(200,300);
_root.lineTo(100,300);
這樣我們可以得到兩個等邊三角形。
MovieClip.endFill()
這個指令沒有附帶參數,它聲明結束一個beginFill指令並且清除早先對“鋼筆”的種種設定,它不能單獨出現只能和beginFill指令成對出現。當然你可以不使用它就像上邊的as一樣,我們建議你養成使用endFill的好習慣。下邊的as將繪製一個正方形:
_root.beginFill(0x00FF00);
_root.moveTo(100,100); // 定義了原點位置
_root.lineTo(200,100);
_root.lineTo(200,200);
_root.lineTo(100,200);
_root.lineTo(100,100); // 閉合路徑
_root.endFill(); // 結束Fill
這是段很工整的as,下邊的這個例子中你可以脫拽三個控制代碼來即時改變三角形的形狀、位置、大小等。
下邊是核心代碼:
// 在舞台上放置3個控制代碼來定義出三角形的各個頂點
_root.attachMovie("squareHandle", "h1", 5);
_root.attachMovie("squareHandle", "h2", 6);
_root.attachMovie("squareHandle", "h3", 7);
h1._x = 50;
h1._y = 150;
h2._x = 250;
h2._y = 150;
h3._x = 150;
h3._y = 50;
// 建立一個空的MC來放置他們
_root.createEmptyMovieClip("mc", 1);
// 定義函數draw
function draw() {
// 清除以前的填充設定
mc.clear();
// 設定填充的各項參數
mc.beginFill(0x0000FF, 20);
// 根據3個控制代碼的位置繪製出三角形
mc.moveTo(h1._x, h1._y);
mc.lineTo(h2._x, h2._y);
mc.lineTo(h3._x, h3._y);
mc.lineTo(h1._x, h1._y);
// 結束Fill
mc.endFill();
}
// 使函數draw每隔25毫秒重新整理一次
setInterval(draw, 25);
// 完成as
MovieClip.clear()
在上邊的as中我們遇到了這個新的指令mc.clear();它的作用就是清除mc。包括對這個mc本身的設定和mc中所包含的物件,並且將虛擬鋼筆的各項參數恢複到預設值。
舉例說明:
在本文的開始我們就已提到及時清除繪製過的、沒有用的線條或形狀的必要性,使用clear可以及時的釋放記憶體空間而不至於造成系統崩潰。但由於它清除了所有的物件,當你想要保留某個物件的時候你就不得不再次把它“繪製”出來。
下一節我們將介紹如何利用as繪製弧線。