TLFTextField独習 その3
- 2010 年 9月 3 日
TLFTextFieldを弄っていて気づいたところ。
デフォルトで隙間があるんです。TextFieldにもあったけど。
borderをつけてみるとわかる。
XML.prettyPrinting = false; XML.prettyIndent = 0; var markup:XML = <TextFlow xmlns="http://ns.adobe.com/textLayout/2008"><p><img source="contrail.jpg" width="200" height="150"/></p></TextFlow>; var field:TLFTextField = new TLFTextField(); field.border= true; field.x = 10; field.y = 10; field.width = 230; field.height= 200; field.tlfMarkup = markup.toString(); addChild( field ); |
この隙間を無くしたいと思いました。
paddingだろうと思って、それらしきものを調べてみるとすべて未定義。
//結果はもれなくundefined。 trace( field.textFlow.paddingTop ); trace( field.textFlow.paddingLeft ); trace( field.textFlow.hostFormat.paddingTop ); trace( field.textFlow.hostFormat.paddingLeft ); trace( field.textFlow.format.paddingTop ); trace( field.textFlow.format.paddingLeft ); |
この隙間はコンテナレベルのpaddingに指定されていました。
//コンテナレベルのレイアウトを確認してみる。 var controller:ContainerController = field.textFlow.flowComposer.getControllerAt( 0 ); //TLFContainerController。謎のクラス。 trace( controller ); //これだ。 trace( controller.paddingTop ); trace( controller.paddingLeft ); trace( controller.format.paddingTop ); trace( controller.format.paddingLeft ); controller.paddingTop = controller.paddingLeft = 0; field.textFlow.flowComposer.updateAllControllers(); |
TLFContainerControllerって名前で意味はわかりますが、ググっても全然出てこない謎のコントローラー。