サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

10. ダイナミックなクラスの作成

ID: FN0311010 Product: Flash

Platform: All
Version: Flash MX 2004

デフォルトでは、クラスのプロパティとメソッドは固定です。つまり、クラスのインスタンスには、クラスによって予め宣言あるいは定義されていないプロパティやメソッドの作成やアクセスはできません。たとえば、Personクラスに、2つのプロパティnameとageが定義された場合を考えてみましょう。

class Person {
  var name:String;
  var age:Number;
}

もし他のスクリプトでPersonクラスのインスタンスを生成し、クラスに存在しないプロパティにアクセスしようとすると、コンパイラはエラーを発生します。たとえば、以下のコードはPersonクラスの新規インスタンス(a_person)を生成します。そして、存在しないhairColorという名前のプロパティに、値を設定しようとしています。

var a_person:Person = new Person();
a_person.hairColor = "blue"; // コンパイルエラー

このコードは、コンパイルエラーになります。それは、Personクラスには、hairColorという名前のプロパティが宣言されていないからです。多くの場合、これはユーザーの希望する動作となります。

しかしときには、もともとクラスに定義されていないプロパティやメソッドを、ランタイムで追加したり、それらにアクセスしたい場合もあります。クラス修飾子'dynamic'で、まさにそれが可能になります。たとえば、以下のコードは、'dynamic'修飾子を前記のPersonクラスに加えています。

dynamic class Person {
  var name:String;
  var age:Number;
}

すると、Personクラスのインスタンスには、もとのクラスに定義されていないプロパティやメソッドの追加・アクセスが可能になります。

var a_person:Person = new Person();
a_person.hairColor = "blue"; // クラスが'dynamic'なのでコンパイルエラーなし

'dynamic'なクラスのサブクラスも、'dynamic'になります。

出典
ActionScript Reference Guideより邦訳。

_____
作成者: 野中文雄
作成日: 2003年11月28日


Copyright © 2001-2003 Fumio Nonaka.  All rights reserved.