次に示すのは、カスタムクラスの基本的な書式です。
package パッケージ名 {
import インポートするクラス;
public class クラス名 {
変数宣言;
コンストラクタ定義;
メソッド定義;
}
}
■パッケージ
ActionScript3.0 から package という要素が必要になりました。 package はそのクラスが属するパッケージを示します。パッケージ名を省略するとデフォルトパッケージとみなされます。
※) デフォルトパッケージの場合、AS ファイルは FLA ファイルと同一のディレクトリなければなりません。
カスタムクラスは、AS ファイル(拡張子 .as )という外部のテキストファイルに記述します。 Flash では、[ファイル]→[新規]で「新規ドキュメント」ダイアログを開き、「 ActionScript ( AS )ファイル」を選択します。
※) AS ファイルはテキストファイルですので、一般的なエディタなどで作成することもできます。
ファイル内で定義したクラス名と AS ファイルのファイル名は同じでなければなりません。また、アルファベットの大文字と小文字は厳密に区別されます。クラス名が「 Main 」であればそのファイル名は、「 Main.as 」とつけなければなりません。
ちなみに、クラス名は大文字から始まるのが一般的なようです。
次の例では、パッケージを指定しないとデフォルトパッケージとなりますので、このファイルは FLA ファイルと同一のディレクトリに保存する必要があります。
Main.as
package {
public class Main {
public var msg:String;
public function Main (msg:String) {
this.msg = msg;
}
}
}
行 3 : は、フィールド変数です。この変数には同じクラス内のコンストラクタやメソッドの内部から自由にアクセスすることができます。
これは、Main クラスのインスタンスの msg プロパティになります。
行 5 : が コンストラクタです。戻り値のデータ型指定がないことに注意してください。
インスタンスを作る際に引数を受け取ることが出来ます。ここでは String 型の引数をひとつ受け取っています。
行 6 : 引数で受け取った値をフィールド変数 msg に代入しています。コンストラクタ内では単に「 msg 」とした場合、引数を指します。 this キーワードを使用して「 msg 」を指定した場合は、フィールド変数を指します。
このクラスは、インスタンスの生成時に受け取った文字列を自身のプロパティ msg に保持するというものになります。
下記のコードをフレームアクションに記述し、Main.as が保存されているディレクトリに保存してパブリッシュします。
var massage:Main = new Main("Hellow World!");
trace (massage.msg);
行 1 : で nwe 演算子を使って Main クラスのインスタンスを生成しています。
行 2 : では、 trace 関数を使って、 Main クラスのインスタンス massage の msg プロパティを出力ウインドウに表示します。
※) trace 関数は、引数を文字列に変換し出力ウインドウに出力します。