ActionScript 3.0で始めるオブジェクト指向スクリプティング

第18回 カスタムクラスを定義する

この記事を読むのに必要な時間:およそ 3.5 分

これで,最小限のクラス定義はできた。同じ場所に保存した Flashムービー(FLA)ファィルのフレームアクションからクラスMyClassのコンストラクタをつぎのように呼出せば,インスタンスが作成されそうに思える。しかし,実際には[コンパイルエラー]が発生してしまう図3⁠。

trace(new MyClass());

図3 クラスのコンストラクタを呼出すとコンパイルエラー発生

図3 クラスのコンストラクタを呼出すとコンパイルエラー発生

実は,クラスには,そのクラスにアクセスできる範囲が指定できる。これはmixi日記などで,その公開範囲を決められるのに似ている。Flashムービーファイルのフレームアクションからアクセスするには,そのクラスは「全体に公開」を意味するpublicという属性が指定されていなければならないのだ。この属性はclassキーワードの前に記述するスクリプト1⁠。

スクリプト1 public属性の指定されたクラスMyClassの定義

// ActionScript 3.0クラス定義ファイル: MyClass.as
package {
  public class MyClass {   // コンストラクタメソッド
    function MyClass() {
    }
  }
}

[ムービープレビュー]を見ると,クラスMyClassのインスタンスが生成され,[出力]ウィンドウに「[object MyClass]」と表示される図4※2⁠。なお,クラス定義を修正したら,必ず保存しなければならない。SWFを書出す(コンパイルする)とき,Flashは保存されたActionScriptファイルからクラス定義を読込むからだ※3⁠。スクリプトウィンドウで書替えただけでは,その修正はSWFファイルに反映されないので注意しよう。

図4 クラスのインスタンスが生成されて[出力]パネルに表示

図4 クラスのインスタンスが生成されて[出力]パネルに表示

※2
クラスのインスタンスは,[出力]すると原則として[object クラス名]と表示される。DateやArrayインスタンスの[出力]は,むしろ例外といってよい。
※3
クラス定義は,ActionScriptファイルから読込まれて,SWFファイルに書出される。したがって,ActionScriptファイルは,SWF ファイルとともにサーバーにアップロードする必要はない。また,ActionScriptファイルを修正しても,改めてSWFファイルを書出さなければ,その変更は反映されない。

著者プロフィール

野中文雄(のなかふみお)

ソフトウェアトレーナー,テクニカルライター,オーサリングエンジニア。上智大学法学部卒,慶応義塾大学大学院経営管理研究科修士課程修了(MBA)。独立系パソコン販売会社で,総務・人事,企画,外資系企業担当営業などに携わる。その後,マルチメディアコンテンツ制作会社に転職。ソフトウェアトレーニング,コンテンツ制作などの業務を担当する。2001年11月に独立。Web制作者に向けた情報発信プロジェクトF-siteにも参加する。株式会社ロクナナ取締役(非常勤)。

URLhttp://www.FumioNonaka.com/

著書