Flash CS3 文件 |
|||
| ActionScript 3.0 程式設計 > 使用 ActionScript 設計物件導向程式 > 類別 > 類別定義 | |||
ActionScript 3.0 類別定義使用的語法類似於 ActionScript 2.0 中類別定義所使用的語法。正確的類別定義語法必須要有 class 關鍵字,後面再加上類別名稱。類別主體是以大括號 ({}) 括住,後面再加上類別名稱,例如,下列程式碼會建立名為 Shape 的類別,其中包含一個變數 visible:
public class Shape
{
var visible:Boolean = true;
}
有一項重大的語法變更,與套件中的類別定義有關。在 ActionScript 2.0 中,若類別位於套件之中,則套件名稱必須包含於類別定義中;在導入 package 陳述式的 ActionScript 3.0 中,套件名稱必須包含於套件宣告中,而不是包含於類別宣告中。例如,下列類別宣告會示範,BitmapData 類別 (屬於 flash.display 套件的一部分) 如何分別在 ActionScript 2.0 和 ActionScript 3.0 中進行定義:
// ActionScript 2.0
class flash.display.BitmapData {}
// ActionScript 3.0
package flash.display
{
public class BitmapData {}
}
ActionScript 3.0 可以讓您使用下列四個特質的其中一個,修改類別定義:
|
特質 |
定義 |
|---|---|
|
|
可以讓您在執行階段加入屬性。 |
|
|
絕對不可以由另一個類別加以擴充。 |
|
|
目前套件之內的參考可以看見。 |
|
|
任何一處的參考都可以看見。 |
上列特質中每一個特質 (除了 internal 以外),您都必須明確包含在特質之中,以取得相關聯的行為方式。例如,定義類別時,若不要包含 dynamic 特質,將無法在執行階段加入屬性至類別實體。您可以將特質放入類別定義的開頭,明確地加以指定,如下列程式碼所示範:
dynamic class Shape {}
請注意,清單中並不包含名為 abstract 的特質,因為 ActionScript 3.0 不支援抽象類別。另外也請注意,清單不包含 private 和 protected 特質。這兩個特質只有在類別定義之內才有意義,而無法套用至類別本身。若不要讓類別在套件之外公開可見,請將類別放入套件之內,並將該類別標示為 internal 特質;或者,您也可以同時省略 internal 和 public 特質,編譯器會自動為您加入 internal 特質。若不要讓類別在原始檔案之外公開可見,請將類別放入原始檔案最下端,套件定義的結尾大括號之下。
類別主體是以大括號括住,用來定義類別的變數、常數和方法。下列範例示範 Adobe Flash Player API 中 Accessibility 類別的宣告:
public final class Accessibility
{
public static function get active():Boolean;
public static function updateProperties():void;
}
您也可以在類別主體之內定義命名空間。下列範例示範如何在類別主體之中定義命名空間,然後在該類別中用來做為方法的特質:
public class SampleClass
{
public namespace sampleNamespace;
sampleNamespace function doSomething():void;
}
ActionScript 3.0 不但可以讓您在類別主體中包含定義,也可以包含陳述式。在類別主體之中但在方法定義之外的陳述式不多不少只執行一次,就是在初次遇到類別定義而建立了相關聯類別物件時。下列範例包含外部函數 hello() 的呼叫,以及在定義類別時,輸出確認訊息的 trace 陳述式:
function hello():String
{
trace("hola");
}
class SampleClass
{
hello();
trace("class created");
}
// 在建立類別時輸出
hola
class created
與舊版 ActionScript 不同的是,ActionScript 3.0 可以允許在相同類別主體中以相同名稱定義靜態屬性和實體屬性。例如,下列程式碼會宣告名為 message 的靜態變數,以及名稱相同的實體變數:
class StaticTest
{
static var message:String = "static variable";
var message:String = "instance variable";
}
// 在您的 Script 中
var myST:StaticTest = new StaticTest();
trace(StaticTest.message); // 輸出:靜態變數
trace(myST.message); // 輸出:實體變數
Flash CS3
目前頁面: http://livedocs.adobe.com/flash/9.0_tw/main/00000061.html