| 套件 | 最上層 |
| 類別 | public dynamic class Class |
| 繼承 | Class Object |
| 語言版本: | ActionScript 3.0 |
| 執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
new 運算子叫用時,建立類別的實體。
類似 flash.net.getClassByAlias() 的一些方法會傳回 Class 類型的物件。 其他方法可能會有 Class 類型的參數,如 flash.net.registerClassAlias()。
如下列範例所示,類別名稱就是 Class 物件的參照:
class Foo {
}
class Foo{} 陳述式是建立 Class 物件 Foo 的類別定義。 此外,陳述式 new Foo() 會建立類別 Foo 的新實體,而且結果會屬於 Foo 類型。
使用 class 陳述式可宣告您的類別。 Class 物件有助於進階的技巧,例如,在執行階段將類別指派到現有的實體物件 (如以下「範例」一節所示)。
類別的任何靜態屬性與方法都會存在於類別的 Class 物件中。 類別本身會宣告 prototype。
一般而言,您不需要手動宣告或建立 Class 類型的變數。 不過在下列程式碼中,會將類別指定為公用 Class 屬性 circleClass,您可以將此 Class 屬性當做主要 Library 類別的屬性:
package {
import flash.display.Sprite;
public class Library extends Sprite {
public var circleClass:Class = Circle;
public function Library() {
}
}
}
import flash.display.Shape;
class Circle extends Shape {
public function Circle(color:uint = 0xFFCC00, radius:Number = 10) {
graphics.beginFill(color);
graphics.drawCircle(radius, radius, radius);
}
}
另一個 SWF 檔可以載入所產生的 Library.swf 檔,然後實體化 Circle 類型的物件。 下例範例會說明其中一種存取 SWF 子檔案資源的方式。(其他技巧包括使用 flash.utils.getDefnitionByName() 或匯入 SWF 子檔案的虛設常式定義)。
package {
import flash.display.Sprite;
import flash.display.Shape;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
public class LibaryLoader extends Sprite {
public function LibaryLoader() {
var ldr:Loader = new Loader();
var urlReq:URLRequest = new URLRequest("Library.swf");
ldr.load(urlReq);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
}
private function loaded(event:Event):void {
var library:Object = event.target.content;
var circle:Shape = new library.circleClass();
addChild(circle);
}
}
}
在 ActionScript 3.0 中,您可以為外部資源 (如影像、音效或字體) 建立內嵌類別,這些類別都會編譯到 SWF 檔中。 在舊版的 ActionScript 中,您可以搭配 MovieClip.attachMovie() 方法使用連結 ID 來連結這些資源。 而在 ActionScript 3.0 中,每項內嵌資源則都由唯一的內嵌資源類別代表。 因此,您可以使用 new 運算子來實體化資源的關聯類別,並呼叫該資源上的方法與屬性。
相關 API 元素
- 將兩個類別宣告為
ClassA和ClassB。 - 宣告 Class 類型的變數 (名為
classToConstruct) 及 Boolean 類型的變數chooseClassA(在此案例中設定為true),但是您的程式碼可以使用自訂測試運算式來設定該變數的值。
package {
import flash.display.Sprite;
public class ClassExample extends Sprite {
public function ClassExample() {
var classToConstruct:Class;
var classInstance:Object;
classToConstruct = ClassA;
classInstance = new classToConstruct();
trace(classInstance); // [object ClassA]
classToConstruct = ClassB;
classInstance = new classToConstruct();
trace(classInstance); // [object ClassB]
}
}
}
class ClassA {
}
class ClassB {
}
Tue Jun 12 2018, 03:47 PM Z
隱藏繼承公用屬性
顯示繼承公用屬性