スクロール対象となるムービークリップ内に、背景bgとテキストフィールドを配置、テキストには100行のテキストを入力し、その時のテキストフィールドの高さ+5pxぐらいになるように、背景bgの_heightを調整しました。(Flash 8 professionalを使用)
- 「ダイナミックテキスト」(フォント埋め込みなし)にすると、きちんと表示される。あとから気付いたのですが、フォントを埋め込むと、オーサリング上での表示より、行間が詰まってしまう。
- 「静止テキスト」に変更、テキストプロパティの「選択可能」のチェックボックスをオフ(選択不可)にすると、例2の場合、92行目以降が表示されなくなる。
(今はコンテンツ内に背景を敷いているが、背景を削除しても)コンテンツの高さは、100行分確保されているので、テキストフィールドが切れているのではなく「見えない」状態。
- フォントのサイズを大きくしてみたら、今度は83行目以降が見えなくなった。どうもテキストフィールドの上から1644px付近を境に見えなくなる様子。
「92行目以降が見えない」のではなく、テキストフィールド全体の高さに関わらず、「1644px以降が消える」という現象っぽい。
- 今度は、テキストを「選択可」にしてみる。今度は100行目まで表示される。が、なぜかテキストフィールドの_heightが増えている。traceしたら本当に増えている。
その結果、コンテンツの高さでスクロール範囲を調整する仕様であるWheelScrollBarクラスも予期せぬ挙動になってしまう。
(マスクにonRollOverを設定しているので、テキスト選択できないのは想定内)
- 50行目のところでテキストフィールドを分割して、同じ見た目になるように調整してみた。パブリッシュすると、つなぎ目の隙間が広くなってしまっている。どうやら「静止テキスト」の「選択可」は、行間までおかしくなる様子。
一方、末端の余白は、先程の半分ぐらいになった。どうやら、テキストフィールドの高さ(行数)に応じて、余分な高さを勝手に追加している様子。
これはテキストフィールドをマスクしていたり、スクロールさせる場合に起きる現象なのかと思い、次の実験もしてみた。簡単なので、お時間あれば試してみてください。
- 実験1:trace等で、100行ぐらい出力してコピー、新規flaファイルに、テキストフィールド(静止テキスト&テキスト選択不可)を作成し、ペーストする。
フォントサイズにもよるが、高さが2000px程度になるので、テキストフィールドのy座標を-1500pxぐらいにしてパブリッシュ。1644px辺の行から見えなくなりませんか?
- 実験2:今度はそのテキストフィールドを「選択可」にします。それをF8キーでムービークリップでくるみ、そのMCのインスタンス名を「text_mc」とします。
プロパティパネルでtext_mcの高さを確認しておき、_rootのフレームスクリプトにtrace(text_mc._height);と記述後、パブリッシュ。text_mcの高さが増えてませんか?
テキストフィールドというヘビーに使う機能で、こんな症状に出会うとは思いもしませんでした。ググっても見つけられないし、解決法はまだ見つかってません。
とりあえずの回避策
- 静止テキスト&選択可にして、勝手に追加される余白分を想定して、背景を伸ばす(イラストとかを下端に配置してごまかす)。または、末端部分のテキストだけアウトライン化してしまう。
- ダイナミックテキストにして、フォントは埋め込まない。Arialなどの、ユーザーが持っていそうなフォントを指定、フォントのない人すいませんパターン。
- ダイナミックテキストにして、フォントも埋め込む。行間がコントロールできないのはご愛嬌で気にしない。
どれもイマイチやなぁと思っていたら、今ひらめきました。
静止テキスト&選択不可にして、テキストフィールドを細かく区分ける。
要は、静止テキスト&選択不可で1644px以上にならないようにすればいいのか。検証してみたところ、行間が詰まりがちにはなりますが、気になる箇所は行で分割して小分けにすればまぁまぁいい感じに。これが一番妥当かなぁ。
それにしても、この症状ってバグなんでしょうか、僕の壮大な勘違いなのでしょうか。謎です。
11/29追記:
スクロールバーとの連携に関しては解決法がありました。コンテンツの高さを、自分で設定すればOKでした。あとでBlogにで紹介します。