Flash(ActionScript3)のTextFieldの話。
TextFieldの高さを内容に合わせる
知りたかったのは、TextFieldの高さを、その内容に合わせて最適な高さにすることができるのか?ということ。
結論から言うと、できたので、まとめておきたいと思います。
要点は以下のようになります。
- TextFieldにはtextHeightというテキストの高さを取得するパラメータが存在する
- しかし、実際のTextFieldの高さはtextHeightに上下2pixelずつ足す必要がある
テスト@wonderfl
TextFieldを入力可能にして配置し、その内容の変化に合わせて、高さ調整を行うテストコードを書きwonderflにアップしてみました。
ちょっと問題になったのは、どのイベントで処理を行うか、ということ。
TextEvent.TEXT_INPUTで一見大丈夫そうでしたが、2つの問題が発生しました。
一つ目は、日本語入力で一気に行を超える文字を入力したとき、スクロールの問題が発生すること。しかしこれはEvent.SCROLLでキャッチして、TextField.scrollV=1; と強引に戻すことで対応は可能でした。
二つ目の問題は、BackSpaceキーで削除したときのこと。これは対策が思いつきませんでした。
イベント対応はEvent.CHANGEで
そこで元々キャッチしていたイベント自体が問題なのでは?と思い別のイベントで試したら問題なくTextFieldの高さを更新することができました。
そのイベントとは、Event.CHANGE。
これなら日本語の時もBackSpaceで削除したときでも問題なくイベント処理で高さ更新ができました。
テストコード
Wonderflに投稿したコードを以下にも貼り付けておきます。
Read More




