類別定義

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 {}
}

副主題

Class 特質
類別主體

Class 特質

ActionScript 3.0 可以讓您使用下列四個特質的其中一個,修改類別定義:

特質

定義

dynamic

可以讓您在執行階段加入屬性。

final

絕對不可以由另一個類別加以擴充。

internal (預設值)

目前套件之內的參考可以看見。

public

任何一處的參考都可以看見。

上列特質中每一個特質 (除了 internal 以外),您都必須明確包含在特質之中,以取得相關聯的行為方式。例如,定義類別時,若不要包含 dynamic 特質,將無法在執行階段加入屬性至類別實體。您可以將特質放入類別定義的開頭,明確地加以指定,如下列程式碼所示範:

dynamic class Shape {}

請注意,清單中並不包含名為 abstract 的特質,因為 ActionScript 3.0 不支援抽象類別。另外也請注意,清單不包含 privateprotected 特質。這兩個特質只有在類別定義之內才有意義,而無法套用至類別本身。若不要讓類別在套件之外公開可見,請將類別放入套件之內,並將該類別標示為 internal 特質;或者,您也可以同時省略 internalpublic 特質,編譯器會自動為您加入 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