今回は,いよいよクラスを定義する。ユーザーが定義するクラスは「カスタムクラス」と呼ぶ。カスタムクラスは,ActionScript定義済みのクラスと同じように使うことができる。Flashムービー(FLA)ファイルとは別のActionScript(AS)ファイルを作成して定義するので,他のプロジェクトに流用したり,ライブラリを構築するのに便利だ。
空のクラスをつくる
始めは,プロパティもメソッドもない空っぽのクラスを定義してみよう。それでも,インスタンスは作成できる。DateやArrayクラスのインスタンスは,new演算子を使ってつぎのように生成した。カスタムクラスのインスタンスも,また同じようにつくる。
var 変数:クラス = new クラス名([引数])
カスタムクラスを定義するには,まずActionScript(AS)ファイルを開かねばならない。[ファイル]メニューから[新規]で[新規ドキュメント]ダイアログボックスを開き,[ActionScript(AS)ファイル]を選ぶ(図1)。
そのクラス名を用いて,新規ActionScript(AS)ファイルがスクリプトウィンドウで開く。クラス定義はこのスクリプトウィンドウに記述して(図2),Flashムービー(FLA)ファイルとは別に保存する。
クラス定義には作法がある。まず,クラス名を識別子で決める。すると,プロパティやメソッドのない最小限のクラスは,つぎのように定義する。
クラスはclass定義キーワードに続けて,クラス名を指定して定義する。そして,続く中括弧{}内のクラス本体には,プロパティやメソッドが記述される。さらに,そのクラス全体をpackageという定義キーワードと中括弧{}で括るのだ。packageキーワードの後には,オプションとしてパッケージ名を指定することもできる(省略可能)。
クラス本体には,プロパティをvar宣言し,メソッドはfunctionとして定義する。その基本は,フレームアクションに変数を宣言したり,関数を定義するのと変わらない。
ところで,前掲「最小限のクラス定義」には,クラスと同名のfunction,つまりメソッドが定義されている。これは,「new クラス名()」でインスタンスを生成するときに呼出される特別なメソッドだ。「コンストラクタ」または「コンストラクタメソッド」という。
クラスを定義すると,クラス名は都合3箇所で使われる。第1に,文字どおりクラス名だ。第2に,コンストラクタメソッド名に,そのクラス名が使われる。そして第3に,クラスを定義したActionScript(AS)ファイルは,「クラス名.as」という名前で保存しなければならない。
- クラス名が指定される3箇所
- クラス名
- コンストラクタメソッド名
- ActionScript(AS)ファイル名
それでは,上述の作法に則って,プロパティも(コンストラクタは別にして)メソッドももたない空っぽのクラスMyClassを,以下のように定義してみよう。なお,コンストラクタメソッドはクラスのインスタンスを返すが,戻り値(returnステートメント)とそのデータ型は指定しないことに注意してほしい(※1)。
package {
class MyClass {
function MyClass() {
}
}
}
保存するActionScriptファイル名は,「MyClass.as」だ。保存先は,パッケージ(package)の指定などによっても変わる。今回は指定なしなので,このクラスを使うFlashムービー(FLA)ファイルと同じ場所に保存する。
- ※1
- クラスには,コンストラクタメソッドが必須だ。しかし,「クラスでコンストラクタメソッドを定義しなかった場合,コンパイラが自動的に空のコンストラクタを作成」する([ヘルプ]の[ActionScript 3.0のプログラミング] > [ActionScriptのオブジェクト指向プログラミング] > [クラス] > [メソッド]の[コンストラクタメソッド]の項)。

