• ベストアンサー

ComboBox のフォント設定はできるのですか?

Windows XP で Flash MX 2004 を使用しています。 コンポーネントのComboBox を使用しているのですが、 ここに表示されるフォントの指定やフォントサイズなどは変更することが出来るのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

できます。 ただし、デバイスフォント(”_明朝”のように、フォント名が” _ ”で始まるフォント)以外のフォントを指定したい時は、フォントシンボルを作成し、これにリンケージを設定する必要があります。 フォントシンボルは、端的に言うとフォントファイルをまるまる swf ファイルに書き出すようなものですから、和文フォントの場合はフォントシンボルのデータだけでも2メガ3メガは当たり前の大容量になります。 また、フォントシンボルにリンケージを設定すると、どうも、必ずフレーム1に書き出されてしまうようなので、ロード画面を作る場合などは不向きです。 以上の観点から考えると、日本語を表示する場合は特に、デバイスフォントの中から選択した方が無難だと思います。 --------------------------------------------- まず、ComboBox のインスタンスにインスタンス名を付けてください。 他のコンポーネントでもそうですが、スタイルや外観を操作するには setStyle というメソッドを使います。 基本的には、  インスタンス名.setStyle( "スタイル名" , 値 ); このように使います。 指定できるスタイル名はコンポーネントの種類によって異なります。 ComboBox で使用可能なスタイルの詳細は、ヘルプの「 Flash コンポーネントガイド」→「コンポーネント辞書」→「 ComboBox コンポーネント」→「 ComboBox コンポーネントのカスタマイズ」をご参照ください。 フォントを変えるには” fontFamily ”スタイル、サイズを変えるには” fontSize ”スタイルを使います。 フォントのサイズを変えただけでは、ComboBox の各項目(セル)の寸法は変わらず、テキストがセル内に収まりきらなくなるとその部分が切れてしまいます。 テキストが切れるようでしたら、サイズを変更する setSize というメソッドで ComboBox 自体の大きさを変更してください。 例えば、ComboBox コンポーネントのインスタンス” combo ”があり、フォントを”_明朝”に、フォントのサイズを 20 にするとします。 フォントのサイズを大きくした分、インスタンス全体のサイズを調整してテキストを切れなくするスクリプトは、次のようになります。 (↓各行頭に全角のスペースが入っています。コピーする際はご注意ください)  //フォントと文字のサイズを設定  combo.setStyle( "fontFamily" , "_明朝" );  combo.setStyle( "fontSize" , 20 );  //全体の大きさを W x H = 150 x 30 にする  combo.setSize( 150 , 30 ); ComboBox コンポーネントは、いくつかのコンポーネントを組み合わせて作られています。 リストや▼のボタンをクリックすると出てくるメニュー部分(ドロップダウンリスト)は、List コンポーネントという別のコンポーネントになっています。 ステージに配置した ComboBox コンポーネントのインスタンスを「自由変形」ツール等でサイズを変更すると、サイズが変化するのは最初の項目(コンボボックス部分)だけで、リストを展開した時に出てくるドロップダウンリストのサイズは変化せず、リスト内ではテキストが欠けてしまう場合があります。 わざわざ setSize メソッドを使って変更するのは、ドロップダウンリスト部分も同時に変形させるためです。 --------------------------------------------- デバイスフォント以外のフォントを利用するには、フォントシンボルを作ってリンケージを設定し、” fontFamily ”スタイルにはリンケージの識別子名を指定します。 それから、埋め込みフォント(デバイスフォントではないもの)を使うという意味で、” embedFonts ”スタイルに true を設定します。 フォントシンボルの作成およびリンケージの設定方法は、「 Flash ユーザーガイド」→「テキストの操作」→「フォントシンボルの作成」をご参考になさってください。 ヘルプでは他の FLA ファイル間で共有するための説明になっていますが、今回は共有が目的ではないので、「ランタイム共有用に書き出し」ではなく「 ActionScript に書き出し」にチェックを入れます。 フォントシンボルのリンケージ識別子に” combo_font ”と付けたとしますと、このフォントを ComboBox に適用するスクリプトは、次のようになります。  //埋め込みフォントを使う  combo.setStyle( "embedFonts" , true );  combo.setStyle( "fontFamily" , "combo_font" );  combo.setStyle( "fontSize" , 20 );  //全体の大きさを W x H = 150 x 30 にする  combo.setSize( 150 , 30 ); 冒頭でも書きましたように、フォントシンボルを書き出すと swf ファイルの容量が極端に肥大してしまい、パブリッシュやムービープレビューにも時間がかかります。 ネットで公開する作品の場合はご注意ください。

ctacos
質問者

お礼

ご説明いただいた内容で出来ました。 丁寧な解説ありがとうございました。

関連するQ&A

専門家に質問してみよう