| パッケージ | トップレベル |
| public dynamic class Class | |
| 継承 | Class Object |
new 演算子を使用して呼び出されると、クラスオブジェクトはクラスのインスタンスを作成します。
flash.net.getClassByAlias() などのいくつかのメソッドは、Class 型のオブジェクトを返します。それ以外のメソッドは、flash.net.registerClassAlias() などの Class 型のパラメータを持つ場合があります。
クラス名は、次に例を示すように、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 ファイルのアセットにアクセスする 1 つの方法を示しています。他に、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() メソッドを使用して、リンケージ識別子によって外部アセットを関連付けていました。ActionScript 3.0 では、各埋め込みアセットが固有の埋め込みアセットクラスによって表されます。そのため、new 演算子を使用してアセットの関連クラスをインスタンス化することや、それらのアセットについてメソッドやプロパティを呼び出すことができます。
たとえば、MXML コンパイラを使用して SWF ファイルを生成する場合、次のように埋め込みクラスを作成します。
[Embed(source="RIGHT.jpg")] public var imgCls:Class;
さらに、これをインスタンス化するために、次のコードを追加します。
var myImg:Bitmap = new imgClass();
関連項目
ClassA と ClassB として宣言します。 classToConstruct という名前の Class 型の変数と
Boolean 型の変数 chooseClassA を宣言します。この例では、この Boolean 型の変数は 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 {
}