3.0[ライブラリ]から[シンボルプロパティ]ダイアログボックスを開くと(パネルメニューより[プロパティ]を選択)、シンボルに[クラス]が入力できます(図001)。クラスを定めたシンボルは、スクリプトで動的に扱えるようになります。本稿では、シンボルに[クラス]を設定するとき注意する点や知っておくと便利なことを4つほどご紹介します。3.0で始めるオブジェクト指向スクリプティング」第22回「MovieClipシンボルにクラスを定義する」をお読みください。クラスは定義しなくともよいシンボルに[クラス]を定めると、まずインスタンスがスクリプトから動的につくれます。それだけが目的で、とくにプロパティやメソッドを加えるつもりがないときは、クラス定義のASファイルはなくても構いません。[シンボルプロパティ]ダイアログボックスの[クラス]フィールドには、一意の識別子を書入れます。そのクラスがなければ、下図002のような警告ダイアログボックスが示されます。そこで、[OK]ボタンをクリックすると、[クラス]に入力した名前で空のクラスが自動的につくられます。図002■クラス定義がないとき自動生成される旨の警告ダイアログボックスMovieClipシンボルならその空のクラスはMovieClipクラスを継承し、引数なしのコンストラクタメソッドが定められます。したがって、設定したクラスのコンストラクタメソッドを呼出すことにより、インスタンスが動的につくれます。シンボルに設定した[クラス]が継承するクラスは、[シンボルプロパティ]ダイアログボックスの[基本クラス]に示されます(前掲図001参照)。パッケージを定めたクラスは完全修飾名で記述するクラスにはパッケージが定められます。パッケージに納めたクラスも、もちろんシンボルに設定できます。[ヘルプ]の[ActionScriptに対するライブラリシンボルの書き出し]には、[シンボルプロパティ]ダイアログボックスの[クラス]の指定についてつぎのように説明されています。シンボルの動作でカスタムクラスを使用するよう指定するには、パッケージも含むクラスのフルネームをこのフィールドに入力します。パッケージのクラスは、パッケージまで含めた「完全修飾クラス名」で書かなければならないのです。クラスPenをantarcticというパッケージに定めたとします。{}}}この場合、[シンボルプロパティ]ダイアログボックスの[クラス]にPenというクラス名だけを書いたのでは足りません。パッケージ名も含めた完全修飾名でクラスを指定しなければならないのです。antarctic.Pen実際、[シンボルプロパティ]ダイアログボックスの[基本クラス]も完全修飾クラス名が示されています(前掲図001参照)。MovieClipシンボルにSpriteクラスを直接継承させるSpriteクラスは、MovieClipのスーパークラスです。MovieClipクラスと異なり、タイムラインをもちません。逆にタイムラインが要らないときは、インスタンスはSpriteの方がMovieClipより軽く済みます(F-site「DisplayObjectインスタンスの種類と使用メモリ」参照)。1フレームだけで、フレームアクションもないMovieClipシンボルには、Spriteのサブクラスが設定できます。クラス定義がないときも、[シンボルプロパティ]ダイアログボックスの[基本クラス]をSpriteクラスに書替えれば、スーパークラス(基本クラス)がSpriteになります(図003)。図003■MovieClipシンボルの[基本クラス]にSpriteを設定する気をつけなければならないのは、シンボルのフレームアクションです[*1]。[アクション]パネルでコメントはもちろん半角スペースひとつ入力しただけでも、コンパイルエラー#1180が示されます[*2]。したがって、MovieClipシンボルに定めた[クラス]にSpriteクラスを直接継承させたときは、フレームアクションとして有効かどうかを問わず、[アクション]パネルに一切入力があってはいけません。これに対して、シンボルにフレームが複数あるときは、第2フレーム以降が無視されるだけでとくにエラーは起こりません。MovieClip.addFrameScript()は、MovieClipシンボルにフレームアクションが書かれていると内部的に呼出される非ドキュメントのメソッドです。詳しくは、プログラマ気分「【AS3.0】ドキュメントに載らないメソッド(addFrameScript)」やapeirophobia「MovieClip.addFrameScript」などをご参照ください。ひとつのクラスを複数のシンボルに設定するひとつのクラスを、複数のシンボルに設定して使いたいことがあります。シンボルに定めるクラスは一意というのが決まりです。したがって、[シンボルプロパティ]ダイアログボックスの[クラス]には、他のシンボルに設定したクラスは使えません。あるクラスのプロパティやメソッドを複数のクラスで使い回したいのでしたら、そのクラスを継承すれば済みます。設定したいシンボルの数だけ一意のクラスを用意し、使い回したいクラスをそれらのスーパークラスに定めればよいのです。そのために空のサブクラスを、いちいち定義する必要はありません。使い回したいクラスは、シンボルの[基本クラス]に設定します(図005)。そのうえで、[クラス]には一意の識別子を定めれば、[基本クラス]を継承する[クラス]が自動的につくられます。