パッケージトップレベル
public dynamic class Class
継承Class Inheritance Object

Class オブジェクトはプログラム内の各クラス定義に対して作成されます。Class オブジェクトはすべて Class クラスのインスタンスです。Class オブジェクトにはクラスの静的プロパティとメソッドが含まれます。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="bratwurst.jpg")]
     public var imgClass:Class;
 

さらに、これをインスタンス化するために、次のコードを追加します。

     var myImg:Bitmap = new imgClass();
 

例の表示

関連項目

Object.prototype
new operator
クラス
高度なテクニック


パブリックプロパティ
 プロパティ定義
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリック Methods
 メソッド定義
 Inherited
指定されたプロパティがオブジェクトに定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object

The following example shows how to use Class objects to defer until runtime the decision about which class to instantiate using the following steps:
  1. Declare two classes as ClassA and ClassB.
  2. Declare a variable of type Class named classToConstruct and one of type Boolean chooseClassA, which is set to true in this case, but your code could use a custom test expression to set the value of that variable.
 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 { }