3.0[ライブラリ]のシンボルにはクラスが設定できます。そのためには、[シンボルプロパティ]ダイアログボックスを開き([ライブラリ]パネルメニューから[プロパティ]を選択)、リンケージセクションで[ActionScript用に書き出し]を選んで[クラス]フィールドに名前(完全修飾名)を入力します。このとき、デフォルトでは[1フレーム目に書き出し]が選択されます(図001)。このオプションの使い方についてご説明しましょう。初めに、[シンボルプロパティ]ダイアログボックスのリンケージセクションにおける[ActionScript用に書き出し]と[1フレーム目に書き出し]の意味を確かめておきましょう。3.0プロフェッショナルガイド』p.338の説明を引いておきます[*1]。それは第1に、[リンケージプロパティ]ダイアログボックスで指定した[クラス]などのAcrionScript用の設定を、シンボルのデータとともにSWFファイルに書出すことを示します。第2に、ActionScriptで使えるように、シンボルのインスタンスがフレームに配置されていなくても、必ずSWFファイルとして書出すという指定でもあります。後述するように、ActionScriptを用いれば、シンボルのインスタンスを予めステージに配置することなく、動的に作成することができます。アニメーションツールとしてのFlashは、ファイルサイズを最適化するため、実際にタイムラインで使われたシンボルのデータのみをSWFに書き出す仕様になっています。[ActionScriptに書き出し]のオプションを選択すると、インスタンスがフレームで使われているかどうかを問わず、SWFファイルへの書出しが行われることになるのです。Flashムービーのフレーム再生は「プログレッシブダウンロード」です[*2]。したがって、データはフレームごとにSWFに書出されます。シンボルはインスタンスが最初に置いてあるフレームのデータとして扱われます。ところが、インスタンスをフレームに置かず、[ActionScript用に書き出し]て動的につくる場合には、どのフレームで使われるデータなのかわかりません。そこで、[1フレーム目に書き出し]が選ばれていれば、そのシンボルはメインタイムラインの第1フレームで使われるデータとして、SWFファイルに書出されるのです。逆にいえば、Flashコンテンツ(SWF)の第1フレームが表示される前に、シンボルのデータはダウンロードされます。第1フレームが表示された瞬間に、シンボルはActionScriptで使える準備が整っていることになります。[1フレーム目に書き出し]すれば、ActionScriptでいつでも使える反面、コンテンツの第1フレームを表示する前にダウンロードされます。このようなデータが多いと、ステージ全体が背景色のままコンテンツがなかなか表れないこともあります。Loading...」などの読込み待ち表示)も役に立ちません。そこで、[1フレーム目に書き出し]は、チェックを外して、選択しないことができます。その場合、シンボルのデータがSWFファイルのどこに書出されるのかは、Flashのバージョンによって少し扱いが変わってきます。Professionalにもとづいています。このバージョンではリンケージのふたつの項目名が少し異なり、[ActionScriptに書き出し]と[最初のフレームに書き出し]となっていました。ActionScript"ですので、現在の項目名が適切でしょう。[*2]「ストリーミング再生」といわれることもあります。Adobeのドキュメントでも「プログレッシブダウンロード」と説明しており、こちらの用語が適切と考えられます。[プロファイラー]を使えば、フレームごとのデータ量が調べられます。詳しくは、「ダウンロードパフォーマンスのテスト」をお読みください。[1フレーム目に書き出し]を選択しない場合のシンボルデータの書出し[1フレーム目に書き出し](CS4以降)または[最初のフレームに書き出し](CS3)を選択しない場合のシンボルデータがどのように書出されるか、バージョンによる扱いの違いをご説明しましょう。Professionalで[最初のフレームに書き出し]のチェックを外すと、シンボルのデータは原則どおりに扱われます。タイムラインにインスタンスが置かれていないかぎり、シンボルはSWFに書出されません。シンボルに設定したクラスは、スクリプトとして使われていればSWFに含められます。したがって、クラスのインスタンスは動的につくれます。表示するシンボルのデータがないので、タイムラインの表示リストに加えてもなにも表示されないことになります。シンボルのインスタンスとして表示したいなら、原則どおりタイムラインに置けばよいということです。置き場所は、インスタンスを初めてつくるフレームかそれよりも手前であれば、どのフレームでも構いません。できればメニュー画面など、他のデータのダウンロードやアニメーションとぶつからない場所を選ぶとよいでしょう。インスタンスはステージに表示する必要はなく(DisplayObject.visibleプロパティをfalseに設定してよく)、ステージの外に配置しても差支えありません。CS5および5.5では、リンケージで[1フレーム目に書き出し]の選択を外しても、クラスが設定されていればシンボルのデータはSWFに書出されます。インスタンスがタイムラインに置かれていないと、シンボルのデータはリンケージに設定したクラスとともに扱われます。そのため、クラスのインスタンスを動的につくってタイムラインの表示リストに加えれば、シンボルのインスタンスとして表示されます[*3]。デフォルトでは、クラスが書出されるのは1フレーム目です(次項参照)。シンボルのリンケージで[1フレーム目に書き出し]のチェックを外した意味がなくなります。インスタンスをタイムラインに置けば、原則とおりシンボルはそのフレームのデータとして書出されます。CS3と同じく、[1フレーム目に書き出し]しないときは、インスタンスを予めタイムラインに置いておくべきでしょう。CS4およびCS5では、標準コンポーネントを[1フレーム目に書き出し]しないとき、インスタンスを予めタイムラインに置かないと、動的につくったインスタンスが正しく表示できないようです(図002)。5.5ではこの問題が解消されました。クラスを書出すフレームActionScriptで定義したクラスは、デフォルトでは1フレーム目に書出されます。この設定は[パブリッシュ設定]または[ActionScript設定](CS5以降)で変えられます。3.0の詳細設定]ダイアログボックスで、[クラスを書き出すフレーム]フィールドに番号を入力します。ActionScriptで定義したクラスすべてに対する設定で、シンボルのようにひとつひとつを別個のフレームに振分ける手だてはありません。大きなライブラリやフレームワークを使うとき、クラスのダウンロードにもプリローダを設けたいといった場合に利用できます。3.0の詳細設定]ダイアログボックスで[クラスを書き出すフレーム]に番号を入力する[クラスを書き出すフレーム]を(たとえば2に)変更すると、[シンボルプロパティ]ダイアログボックスのリンケージの項目も、[1フレーム目に書き出し]ではなく設定したフレーム番号に変わります(図004)。