Adobe Flash非公式テクニカルノート シンボルにクラスを定めるときのヒント
[ライブラリ]から[シンボルプロパティ]ダイアログボックスを開くと(パネルメニューより[プロパティ]を選択)、シンボルに[クラス]が入力できます(図001)。クラスを定めたシンボルは、スクリプトで動的に扱えるようになります。本稿では、シンボルに[クラス]を設定するとき注意する点や知っておくと便利なことを4つほどご紹介します。なお、シンボルへのクラスの設定について詳しくは、「ActionScript 3.0で始めるオブジェクト指向スクリプティング」第22回「MovieClipシンボルにクラスを定義する」をお読みください。 図001■[シンボルプロパティ]の[ActionScriptリンケージ]で[クラス]が設定できる 01 クラスは定義しなくともよい [シンボルプロパティ]ダイアログボックスの[クラス]フィールドには、一意の識別子を書入れます。そのクラスがなければ、下図002のような警告ダイアログボックスが示されます。そこで、[OK]ボタンをクリックすると、[クラス]に入力した名前で空のクラスが自動的につくられます。 図002■クラス定義がないとき自動生成される旨の警告ダイアログボックス MovieClipシンボルならその空のクラスはMovieClipクラスを継承し、引数なしのコンストラクタメソッドが定められます。したがって、設定したクラスのコンストラクタメソッドを呼出すことにより、インスタンスが動的につくれます。なお、シンボルに設定した[クラス]が継承するクラスは、[シンボルプロパティ]ダイアログボックスの[基本クラス]に示されます(前掲図001参照)。 02 パッケージを定めたクラスは完全修飾名で記述する シンボルの動作でカスタムクラスを使用するよう指定するには、パッケージも含むクラスのフルネームをこのフィールドに入力します。 つまり、パッケージのクラスは、パッケージまで含めた「完全修飾クラス名」で書かなければならないのです。たとえば、クラスPenをantarcticというパッケージに定めたとします。
この場合、[シンボルプロパティ]ダイアログボックスの[クラス]にPenというクラス名だけを書いたのでは足りません。パッケージ名も含めた完全修飾名でクラスを指定しなければならないのです。 antarctic.Pen 実際、[シンボルプロパティ]ダイアログボックスの[基本クラス]も完全修飾クラス名が示されています(前掲図001参照)。 03 MovieClipシンボルにSpriteクラスを直接継承させる 1フレームだけで、フレームアクションもないMovieClipシンボルには、Spriteのサブクラスが設定できます。また、クラス定義がないときも、[シンボルプロパティ]ダイアログボックスの[基本クラス]をSpriteクラスに書替えれば、スーパークラス(基本クラス)がSpriteになります(図003)。 図003■MovieClipシンボルの[基本クラス]にSpriteを設定する 気をつけなければならないのは、シンボルのフレームアクションです[*1]。[アクション]パネルでコメントはもちろん半角スペースひとつ入力しただけでも、コンパイルエラー#1180が示されます[*2]。したがって、MovieClipシンボルに定めた[クラス]にSpriteクラスを直接継承させたときは、フレームアクションとして有効かどうかを問わず、[アクション]パネルに一切入力があってはいけません。 図004■フレームアクションにひと文字でも入力があるとコンパイルエラーになる
04 ひとつのクラスを複数のシンボルに設定する けれど、あるクラスのプロパティやメソッドを複数のクラスで使い回したいのでしたら、そのクラスを継承すれば済みます。つまり、設定したいシンボルの数だけ一意のクラスを用意し、使い回したいクラスをそれらのスーパークラスに定めればよいのです。 もっとも、そのために空のサブクラスを、いちいち定義する必要はありません。使い回したいクラスは、シンボルの[基本クラス]に設定します(図005)。そのうえで、[クラス]には一意の識別子を定めれば、[基本クラス]を継承する[クラス]が自動的につくられます。 図005■複数のシンボルで使い回したいクラスは[基本クラス]に設定する 作成者: 野中文雄 Copyright © 2001-2011 Fumio Nonaka. All rights reserved. |
|||||||