3.0の詳細設定]ダイアログボックスにおける[ステージのインスタンスを自動宣言]のオプションについてご説明します。3.0]が選ばれているときに[設定]ボタンをクリック)には、[ステージのインスタンスを自動宣言]というオプションがあります(図001)。ところが、コミュニティヘルプを調べても、その詳しい説明はないようです。3.0の詳細設定]ダイアログボックスの[ステージのインスタンスを自動宣言][ステージのインスタンスを自動宣言]というのは、予めタイムラインに置いたインスタンスは変数宣言をしなくても、インスタンス名の変数は自動的に宣言されてインスタンスが納められるという機能です。したがって、とくに変数として宣言しなくても、そのインスタンス名を参照して、クラスのプロパティやメソッドにアクセスできます。3.0のフレームアクションでは、このオプションの設定は意味をもちません。タイムラインに置かれたインスタンスは、つねに「自動的にそのインスタンス名で変数が宣言され」るからです[*1]。Professionalであれば、フレームアクションにあえてインスタンス名を変数宣言しても構いません[*2]。すると、[コードヒント]が表示されるので、スクリプトを書くのが楽になります。クラス定義では[ステージのインスタンスを自動宣言]に頼らない[ドキュメントクラス]やMovieClipシンボルに設定するクラスを定義したとき、[ステージのインスタンスを自動宣言]を設定しておくと、予めタイムラインに置いたインスタンスに変数宣言することなくアクセスできます。Flashムービー(.flaファイル)のメインタイムラインにMovieClipインスタンスmy_mcを置いて、以下のクラスAutoDeclarationをドキュメントクラスを設定したとします。[ステージのインスタンスを自動宣言]に設定しておけば、クラスに変数宣言することなくコンストラクタメソッドからインスタンスにアクセスできます(図002)。{trace(my_mc);}}}図002■タイムラインに置いたインスタンスを変数宣言することなくコンストラクタからアクセスけれども、クラスに変数宣言がないと、参照しているインスタンスが何なのかスクリプトとしてわかりにくくなります。変数宣言で型指定すれば、コードヒントが表示されますので、正しいスクリプトを素早く書けるでしょう。したがって、[ステージのインスタンスを自動宣言]を設定する利点はあまり考えられません。Profesionalでは、[ステージのインスタンスを自動宣言]が設定されていても、クラスにインスタンスを変数として宣言することはできます[*3][*4]。すると、[ステージのインスタンスを自動宣言]の設定をどうするかは、さほど大きな意味がありません。いえば、この設定を外した場合、インスタンスを変数宣言しないと[コンパイルエラー]になるということです。[オブジェクトインスタンスの作成]には、つぎのように説明されています。Flashでは、ムービークリップシンボル、ボタンシンボル、またはテキストフィールドをステージに配置し、プロパティインスペクタでインスタンス名を割り当てた場合、自動的にそのインスタンス名で変数が宣言され、オブジェクトインスタンスが作成され、そのオブジェクトが変数に格納されます。併せて「MovieClipインスタンスとインスタンス名」をご参照ください。Professionalでは、フレームアクションでインスタンス名を変数宣言すると、定義に「コンフリクト」(重複)があるという[コンパイルエラー]になります。Professionalでは、[ステージのインスタンスを自動宣言]したうえでインスタンス名を変数宣言すると、定義に「コンフリクト」(重複)があるという[コンパイルエラー]になります。タイムラインに置いたインスタンスは、変数をpublic属性で宣言する必要があります。それらのインスタンスに対しては、外部からプロパティやメソッドへのアクセスが許されなければならないからです。