今回の問題とは別に、Macのでswfにフォーカスを渡したまま戻らなくなるので、ブラウザのホイールが効かなくなる現象があります。

You need to upgrade your Flash Player!

スクロール対象となるムービークリップ内に、背景bgとテキストフィールドを配置、テキストには100行のテキストを入力し、その時のテキストフィールドの高さ+5pxぐらいになるように、背景bgの_heightを調整しました。(Flash 8 professionalを使用)

  1. 「ダイナミックテキスト」(フォント埋め込みなし)にすると、きちんと表示される。あとから気付いたのですが、フォントを埋め込むと、オーサリング上での表示より、行間が詰まってしまう。
  2. 「静止テキスト」に変更、テキストプロパティの「選択可能」のチェックボックスをオフ(選択不可)にすると、例2の場合、92行目以降が表示されなくなる。
    (今はコンテンツ内に背景を敷いているが、背景を削除しても)コンテンツの高さは、100行分確保されているので、テキストフィールドが切れているのではなく「見えない」状態。
  3. フォントのサイズを大きくしてみたら、今度は83行目以降が見えなくなった。どうもテキストフィールドの上から1644px付近を境に見えなくなる様子。
    「92行目以降が見えない」のではなく、テキストフィールド全体の高さに関わらず、「1644px以降が消える」という現象っぽい。
  4. 今度は、テキストを「選択可」にしてみる。今度は100行目まで表示される。が、なぜかテキストフィールドの_heightが増えている。traceしたら本当に増えている。
    その結果、コンテンツの高さでスクロール範囲を調整する仕様であるWheelScrollBarクラスも予期せぬ挙動になってしまう。
    (マスクにonRollOverを設定しているので、テキスト選択できないのは想定内)
  5. 50行目のところでテキストフィールドを分割して、同じ見た目になるように調整してみた。パブリッシュすると、つなぎ目の隙間が広くなってしまっている。どうやら「静止テキスト」の「選択可」は、行間までおかしくなる様子。
    一方、末端の余白は、先程の半分ぐらいになった。どうやら、テキストフィールドの高さ(行数)に応じて、余分な高さを勝手に追加している様子。

これはテキストフィールドをマスクしていたり、スクロールさせる場合に起きる現象なのかと思い、次の実験もしてみた。簡単なので、お時間あれば試してみてください。

テキストフィールドというヘビーに使う機能で、こんな症状に出会うとは思いもしませんでした。ググっても見つけられないし、解決法はまだ見つかってません。

とりあえずの回避策

どれもイマイチやなぁと思っていたら、今ひらめきました。

静止テキスト&選択不可にして、テキストフィールドを細かく区分ける。

要は、静止テキスト&選択不可で1644px以上にならないようにすればいいのか。検証してみたところ、行間が詰まりがちにはなりますが、気になる箇所は行で分割して小分けにすればまぁまぁいい感じに。これが一番妥当かなぁ。
それにしても、この症状ってバグなんでしょうか、僕の壮大な勘違いなのでしょうか。謎です。

11/29追記:
スクロールバーとの連携に関しては解決法がありました。コンテンツの高さを、自分で設定すればOKでした。あとでBlogにで紹介します。