パッケージ | トップレベル |
クラス | public dynamic class Class |
継承 | Class Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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
演算子を使用してアセットの関連クラスをインスタンス化することや、それらのアセットについてメソッドやプロパティを呼び出すことができます。
関連する API エレメント
- 2 つのクラスを
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 { }
Tue Jun 12 2018, 10:34 AM Z