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

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

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 演算子を使用してアセットの関連クラスをインスタンス化することや、それらのアセットについてメソッドやプロパティを呼び出すことができます。

例を表示

関連項目

Object.prototype
new 演算子
Classes
Advanced topics


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

次の例は、以下に示す手順に従って、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 {
}