• 締切済み

スクロールバーの設定

外部テキストを読み込んで、autoSizeのテキストフィールドに表示させ、そのテキストフィールドにスクロールバーをつけたいと考えています。 外部テキストを読み込んで、autoSizeのテキストフィールドに表示させることはできました。 スクロールバーの方は、テキストフィールドに付いてはいるんですがautoSizeに対応しないため、機能せず。という状況です。 環境:Windows XP/Flash MX 色々調べても解決出来なかったので困っています。 よろしくお願いします。

みんなの回答

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

#1です。 長いテキストを、スクロールバーを付けて表示できればいいだけなのでしょうか? スクロールバーを利用する時は、autoSize に none を指定してテキストフィールドの大きさを固定しておくことが最も簡単です。 ScrollBar コンポーネントも、テキストフィールドが自動伸縮しないことを前提に設計されています。 自動伸縮ありの場合は#1にも書きましたように、テキストが全て収まるようにテキストフィールドの大きさが変更されます。 大きさが変わった結果、ステージからはみ出して見えなくなった部分があったとしても、Flash の中ではスクロールの必要のないテキストフィールドと扱われるので、スクロールバーは機能しません。 自動伸縮なしのテキストフィールドではフィールドに入りきらない部分は表示されませんが、コンポーネントを利用してスクロールバーを付けるか、スクロールボタンを自作するなどすると表示させることができます。 デフォルトでは autoSize が none に設定されていますので、通常は改めて設定し直す必要はありません。 自動伸縮なしのテキストフィールドにしてもスクロールバーが動かない場合は、以下の2点をご確認ください。  ・スクロール対象の指定に誤りがないかどうか  ・テキストフィールドに読み込んだテキストを表示する方法   →テキストフィールドの「変数:」の項目に変数名を指定することでも表示できますが、    ScrollBar コンポーネントを利用する時は、この方法ではスクロールバーが機能しません。    読み込みの完了を待ち、text プロパティに内容を代入してください。 この辺りの件は、以前、別の質問で説明したことがありますので、よろしければご参考になさってください。  ・ FlashMXのスクロールバーに関して   http://okwave.jp/qa1219924.html ------------------------------------------------------------- どうしても autoSize で自動伸縮を有効にし、ステージからはみ出した部分をスクロールバーでスクロールさせたい、といった話であれば、少々強引になりますが、スクロールバーでテキストフィールドそのものを動かす方法も考えられます。 ScrollBar コンポーネントは、スライダの位置に応じて返す値を自由に設定できるようになっています。 (テキストフィールドのテキストをスクロールする場合は、この値は自動で設定されます) スライダの位置情報を工夫し、この値からスクロール対象を動かす処理を自作すれば、テキストフィールド内のテキストに限らず、ムービークリップやテキストフィールド自体もスクロールさせることができます。 このような目的で使う時は、一般的には、マスクを利用して表示領域外に出ている部分を見えないようにします。 しかし、Flash MX のパブリッシュ機能では setMask を使ってもデバイスフォントやダイナミックテキストにマスクがかからない( Flash Player 6 のバージョンによっては可能。ちなみに、当方の Flash MX では不可、Flash 8 で Flash Player 6 向けにパブリッシュした場合は可能でした)ようですので、ステージからはみ出すために見えなくなるといった事情にでも頼らない限り、余分な部分まで見えてしまって不自然になるかもしれません。 まあ、方法はあるにはありますが、面倒な割に思ったほどいい成果は出ないかと思います。 長いテキストをスクロールバー付きで表示したいだけでしたら、autoSize による自動伸縮を使用せずにスクロールバーを付ける方法が簡単・確実でオススメです。

R242424
質問者

お礼

回答ありがとうございます。 DPEさんのご説明通りやったところ希望通りのものを作ることができました。 本当にありがとうございました。

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

autoSize プロパティに” none ”(自動伸縮なし)以外を指定すると、文字列の長さに合わせてテキストフィールドの大きさが変化します。 つまり、スクロールすることなく文字列全体を表示できる大きさに調整されるということので、スクロールバーを付けても意味がありません。 wordWrap や multiline プロパティとの組み合わせで伸縮のスタイルが変わるものの、文字列を全て表示できる大きさになる点は同じですから、自動伸縮を利用するならスクロールバーは不要だと思いますが。

R242424
質問者

お礼

回答していただきありがとうございます。 表示範囲にテキストフィールドが収まらないため(テキストの量が多いため)、スクロールバーを利用したいと考えています。 よろしくお願いします。

関連するQ&A