TextField が思いのほか細長くなったら

スクリプトで生成したダイナミックテキストフィールドが、

textfield

みたいな「縦細TextField」になった時に疑うポイント。

通常、流し込むテキスト内容に応じて TextField の高さを可変させる時は:

_myTF = new TextField();
_myTF.width = 300;
_myTF.autoSize = "left";
_myTF.multiline = _myTF.wordWrap = true;

みたいなことをするけれど、3行目に:

_myTF = new TextField();
_myTF.width = 300;
_myTF.autoSize = "left";
_myTF.x = 5;
_myTF.multiline = _myTF.wordWrap = true;

と追加してみると、幅300が反映されずに「縦細テキストフィールド」になった。この辺の順番並び替えをいろいろやってみると:

  • autoSize→width→xの順だとNG
  • autoSize→x→widthの順だとOK
  • width→autoSize→xの順だとNG
  • width→x→autoSizeの順だとOK
  • x→autoSize→widthの順だとOK
  • x→width→autoSizeの順だとOK

どうもx→widthの順に設定しておかないといけないのかと思いきや、
width→autoSize→multiline&wordWrap→xの順だとOK
だったりして、これはなんとも結論しがたいけれど、とにかく、

textfield

みたいなことになったら、上の項目の順番を疑えばいいかもという未確認メモ。

Comments:4

Aquioux 09-04-14 (火) 20:47

なぜ座標の指定であるところの x の指定がテキストフィールド形状崩壊のトリガーになるのかは分かりませんが、期待どおりの動きにならない理由は何となく想像がつきます。

autoSize と width を同時に指定しているからではないでしょうか。

width は setter として使用した場合はテキストフィールドの幅を固定するプロパティですよね。
一方 autoSize は TextField#text で指定された文字列の量によって、テキストフィールドの幅・高さを自動的に拡大・縮小するプロパティです。

autoSize は変動、width は固定。
本来、このふたつは共存できないプロパティなんじゃないかと思います。
おそらく sutoSize と height も同様になるんじゃないでしょうか。

tera 09-04-14 (火) 22:27

コメントありがとうございます!
widthとautoSize両指定って駄目なんでしょうか。
幅300固定で折り返して高さ可変、ってやつをやりたくて上のように設定して、まぁ多少のクセはあるもののそれなりに動いているのですが、これがAS3の仕様的には共存できないとなると、「幅固定&&高さ可変」ってASで実現する方法ってあったでしょうか?なんかよく見る表現だとは思うのですけれど。。

Aquioux 09-04-15 (水) 23:24

ライブヘルプの TextField#autoSize を改めて読んでみたら、以下のように書いてありました。

http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/flash/text/TextField.html#autoSize

(要約)
autoSize を TextFieldAutoSize.LEFT に設定すると、
1. テキストフィールドの右側が伸縮。
2. テキストに改行が含まれる場合、下側も伸縮。
3. wordWrap = true に設定した場合、下側だけが伸縮し、右側は固定。

ということは、 wordWrap = true も併せて指定すれば、autoSize と width は共存可能のようです。
すいません、いい加減なこと書いて。

となると座標指定でテキストフィールドの形状がおかしくなるのはバグなんでしょうか。

現実的な解決方法としては、座標指定は切り離して、TextField を DisplayObjectContainer に addChild して、TextField ではなく Container の方で座標指定をおこなう、という風にせざるを得ないのかなぁ。

tera 09-04-16 (木) 1:29

いつもご丁寧にフォローいただきまことにありがとうございます。
先日もフォローいただいたcrossdomain.xmlのポリシーファイルの件も、あとで調べようと思いつつもそのままになってしまっている残念な僕ですが、なんとか時間を作ってどうにかしようと(実際しないといけないし)思いますので、今後ともどうぞよろしくお願い致します。

Comment Form
Remember personal info
AS3習得本
AS3の全容を学習できる本。この中でどれか1冊自分に合ったものを。
Adobe Flash CS4 詳細!ActionScript3.0入門ノート ActionScript3.0 プロフェッショナルガイド 初めてのActionScript 3.0 Flashユーザーのためのステップアップガイド 詳説 ActionScript 3.0 Actionscript 3.0 Cookbook
AS3発展本
ASでアニメーションさせる面白さを知るための本。
Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編] ActionScript 3.0 アニメーション AdvancED ActionScript 3.0 Animation (Advanced)
AS2
"Flash"ではなく"ActionScript2.0"学習のための良著。他にもいろいろ読んだけど、この4冊を読んだ後、自分が成長できた感じがしました。
FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付] Essential Actionscript 2.0 Flash 8 Essentials Foundation Actionscript Animation: Making Things Move (Foundation)

あわせて読みたいブログパーツ

相互リンク

hi-posiさん
携帯Flashといえばhi-posiの岡田昇三さん。FlashLiteの有益な記事もたくさん書かれていていつもお世話になってます。ついにご挨拶させていただきました。面白すぎる人でしたw。

Return to page top