重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Textareaを使用して外部テキストファイルを読み込み、更新情報を表示するといったコンテンツを現在作っています。
なんとか外部テキストファイルの表示まではできました。
フォントやそのサイズ、色などの設定をしたいのですが、よくわからないので、質問させていただきます。
過去ログ(http://oshiete1.goo.ne.jp/kotaeru.php3?q=970894)からTextareaでの設定についてDPEさんの以下のようなアドバイスを見つけました。


 /* TextArea のカスタマイズ */
  //縦・横のスクロールバーを自動で出す
  disp_fld.vScrollPolicy = "auto";
  disp_fld.hScrollPolicy = "auto";
  //文字の折り返しを禁止する
  disp_fld.wordWrap = false;

 /* 文字に関する設定 */
  //使用するフォント
  disp_fld.setStyle( "fontFamily" , "_等幅" );
  //文字のサイズ
  disp_fld.setStyle( "fontSize" , 15 );
  //斜体・太文字にする
  disp_fld.setStyle( "fontStyle" , "italic" );
  disp_fld.setStyle( "fontWeight" , "bold" );
  //テキストの色を青にする
  disp_fld.setStyle( "color" , 0x0000DD );


わからないことは次の4点です。
1,フォントを指定すると、そのフォントは埋め込まれるのか?あるいは閲覧ユーザのブラウザの設定にゆだねられるのか。
自分のマシンに入ってるフォントを表示したいが、どうすればいいのか。
2,このsetStyleはどのオブジェクトに記述すべきなのか。
3,disp_fld.vScrollPolicy = "auto";
  disp_fld.hScrollPolicy = "auto";
などの記述は必ず必要なのか、
4、System.useCodepage = true; は記述した方がいいいのか、もしそうならばどこへ記述するべきなのか。

よろしくお願いします。

A 回答 (1件)

まず、フォントについてですが。


その質問でも書きましたとおり、TextArea コンポーネントでは、setStyle で”fontFamily”属性を設定することでフォントを変更できます。
フォントを設定しても、文字のアウトライン情報は埋め込まれません。ムービーの容量は軽くなりますが、デザインは閲覧者のパソコンに入っているフォントの中で、指定のフォントに近いものが選ばれます。

しかし、欧文フォント・数字フォントにして半角の英数字を表示した場合は設定が反映されるのですが、日本語フォント・全角の文字の場合は、フォント名を正確に指定しても、なぜか明朝体とゴシック体以外は有効にならないようです。
setStyle と対になっている getStyle というメソッドで見てみると、確かに設定されているのは確認できるのですが、実際には、ゴシック体( Windows では MS Pゴシック)に置き換えられて表示されます。
欧文フォント・数字フォントでも、アウトライン情報が埋め込まれない以上は、相手のパソコンに当該フォントが入っていない場合は表示されないか、あるいは別のフォントに置き換わる可能性があるかと思います。


setStyle は TextArea の様々な属性を設定するためのものですから、TextArea コンポーネントのインスタンス名を使います。
属性を設定する TextArea コンポーネントのインスタンスまでのターゲットパスさえ正しければ、フレームアクションだろうと、何かのオブジェクトでのオブジェクトアクションとして実行しようと問題はありません。
ただ、TextArea で on や onClipEvent アクションを利用しないのであれば、やはりフレームアクションとして記述した方が分かりやすいと思います。


TextArea では、スクロールバーの表示/非表示を vScrollPolicy (縦)と hScrollPolicy (横)プロパティでそれぞれ指定できるようになっています。
どちらのプロパティも、auto(必要に応じて表示)・on(常に表示)・off(常になし)のいずれかを設定できます。
デフォルトでは auto になっています。変更しなくてもいいのであれば、この設定は不要です。
テキストフィールドでは、ダイナミックテキストを表示する場合であっても、文字のサイズや色・装飾等は「プロパティ」パネルでできますが、TextArea コンポーネントの「プロパティ」にはこれらの情報が表示されず、ムービーの編集画面では設定できません。
変更する必要があるものだけ、setStyle で設定してください。


useCodepage は、ムービーのどこか1箇所で実行しておくと、再び変更しない限りはずっと有効です。
変更する場合は、通常は外部テキストを読み込む前に実行します。場所はフレームでもオブジェクトでも、どこでも構いません。

この設定が必要かどうかは、読み込むテキストの記録方式によって違います。
例えば Windows のメモ帳では、文書を保存する際に文字コードを選ぶことができます。
Flash Player 6 以降が採用している文字コードである「 UTF-8 」を選んで保存したファイルを読み込む場合は、System.useCodepage = true; を実行すると、逆に文字化けが発生してしまいます。
「 ANSI 」とはいわゆる Shift-JIS のことで、こちらで保存したファイルの場合は、System.useCodepage = true; が必要です。
CGIや他のアプリケーションが書き出したテキストファイルを読み込む際は、どの文字コードで書き出されているかをご確認の上で、System.useCodepage = true; を実行してください。

------------------------

Flash MX 2004 では、テキストフィールド+ ScrollBar コンポーネントよりも高機能なインターフェイスとして TextArea コンポーネントが登場し、それに伴い ScrollBar コンポーネントも廃止されたのですが、フォントや文字の設定が分かりにくくて扱いにくかったり、容量・処理が重い・妙なバグがあるなどで、あまり評価が良くなかったようです。

MX 2004 の Ver.7.2 アップデータでは、廃止されていた ScrollBar コンポーネントが復活しました。名前も UI ScrollBar と変わり、MX の ScrollBar コンポーネントより、ActionScript でも扱いやすくなっています。
アップデートして UI ScrollBar コンポーネントを利用する方が、フォントや文字の設定等は簡単にできます。
むしろ、アウトライン情報の埋め込み機能を利用できるなど、文字の表示そのものに関しては TextArea コンポーネントよりも融通が利くと言えるかもしれません。

ただし、TextArea のように自動でスクロールバーを出してくれる機能はなくなります。
( TextArea の vScrollPolicy を on にしているのと同様の状態になります)
テキストフィールドの maxscroll が1の時はスクロールが不要なので、if 文で maxscroll の値を見て、スクロールバーの _visible プロパティを false にする、といった処理で、TextArea と似たような機能を実装できます。


おそらく、LoadVars か loadVariables で読み込んだ変数を TextArea の text プロパティに代入して、外部テキストを表示していると思いますが。
テキストフィールドを制御する TextField クラスにも、同じく text というプロパティがあります。
アップデートしてテキストフィールド+ UI ScrollBar コンポーネントに変更する場合は、テキストフィールドに TextArea コンポーネントと同じインスタンス名を付けることで、簡単に移行できます。


 ・Macromedia Flash MX 2004 アップデータ
  http://www.macromedia.com/jp/software/flash/spec …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!