こんにちはtaroです.
明けましておめでとうございます.
今回はXMLを利用して、TextFieldに複雑な書式を設定する方法について考えていきます.
TextFieldに複雑な書式を設定するには2通りの方法があります.
- TextFormatとTextField.setTextFormat()の組み合わせ.
- htmlTextを用いる.
今回はhtmlTextを使用して, 色々な書式を設定していきます.
しかし, htmlTextというと少し面倒です.
tf.htmlText = '<font face="_ゴシック" color="#C83E43"><u><a href="event:'
+ event_name + '">' + str + '</a></u></font>'; このように, + や ' が大量にある式を書くこととなるからです.
XMLを利用する
そこで, htmlTextに設定する文字列を生成するのにXMLを使用するということを考えてみます.
ActionScript3.0で利用出来るE4X(ECMAScript for XML)には { } という記法があります.
var タグ:String = 'p';
var 属性名:String = 'face';
var 属性値:String = '_ゴシック';
var 内容:String = 'テキスト';
var myXML:XML = <{タグ} {属性名}={属性値}>{内容}</{タグ}>;
// xmlの内容を表示
trace(myXML.toXMLString()); // <p face="_ゴシック">テキスト</p>
このように, { } はタグ名, 属性名, 属性値, ノードの中身を, 変数の値として設定することが出来ます.
htmlTextの設定と相性が良さそうです. 先ほどの例を使って, 早速やってみます.
var html_text:XML = <font face="_ゴシック" color="#C83E43">
<u><a href={'event:' + event_link}>{str}</a></u>
</font>;
tf.htmlText = html_text.toXMLString(); さてどうでしょう.
複数行になってしまいました. 何が問題なのでしょうか, 設定されている文字列を調べてみます.
<font face="_ゴシック" color="#C83E43">
<u>
<a href="event:click">テキスト・リンク</a>
</u>
</font>
どうやら、XMLから文字列をつくるのに整形されてしまっているようです. これを止めるにはどうすればいいでしょうか. リファレンスを見ます.
XML.prettyPrinting = false;
prettyPrintingというのをtoggleしてfalseにしてやれば整形されない文字列として出力してくれそうです. 1行足してみます.
var html_text:XML = <font face="_ゴシック" color="#C83E43">
<u><a href={'event:' + event_link}>{str}</a></u>
</font>;
// 追加
XML.prettyPrinting = false;
tf.htmlText = html_text.toXMLString(); みてみます.
良さそうです. 生成されている文字列も期待通りのものとなっています.
<font face="_ゴシック" color="#C83E43"><u><a href="event:click">テキスト・リンク</a></u></font>
まとめ
今回はhtmlTextを用いた書式の設定について少し考えてみました.
- XMLの { } を用いると, + や ' 等の煩わしさから開放される.
- XML.prettyPrinting = false; と設定して整形されないように気をつける.
_トラックバック(0)
TrackbackURL : http://level0.kayac.com/cgi-bin/mt/mt-tb.cgi/1266
- AfterEffects
- AIR
- android
- Arduino
- AS2
- AS3
- as3
- BitmapData
- CHECKMATE
- crossdomain
- CS4
- Date
- DisplacementMapFilter
- Event
- event
- ExternalInterface
- FileReference
- FireBug
- FireFox
- Flash Lite
- FlashDevelop
- FlashPlayer10
- flash時計
- Flex
- Font
- GoogleMapsAPI
- INFINITY TANK BATTLE
- JSFL
- JSON
- Mobile
- mxp
- PaperVision3D
- Particle
- Progression
- Sound
- TextField
- Tips
- tool
- trace
- wonderfl
- Wonderfl
- xml
- アニメーション
- サンプルコード
- タイムライン
- デバッガ
- バグ
- フレーム
- ブログパーツ
- 爆速

(0)






_コメントする