パッケージトップレベル
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="RIGHT.jpg")]
public var imgCls:Class;
 

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

var myImg:Bitmap = new imgClass();
 

例の表示

関連項目

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


パブリックプロパティ
 プロパティ定義
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリックメソッド
 メソッド定義
 InheritedhasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 InheritedisPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 InheritedpropertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
Object
 InheritedsetPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 InheritedtoString():String
指定されたオブジェクトのストリング表現を返します。
Object
 InheritedvalueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
Object

次の例は、下に示す手順に従って、Class オブジェクを使用して、インスタンス化するクラスの決定を 実行時まで保留する方法を示しています。
  1. 2 つのクラスを ClassAClassB として宣言します。
  2. 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 {
}