Flash Player 10中提供的新功能之一:強大的文本排版能力無疑是Flash Player 10中最複雜的功能之一,連Adobe自己都覺得太複雜了,以至於推出一個TextLayout Framework來協助開發
者進行開發。
小生我也是正在入門中,先撇開TextLayout Framework不說,從最底層探索吧,一起在這裡分享下我的學習筆記。
第一節:牛逼無比,萬物之主的TextBlock(
flash
.text.engine.TextBlock)
何為TextBlock?顧名思義我們可以稱之為文字區塊,例如我們的一段文字就是視為放在一個文字區塊裡,文字區塊只是負責儲存文本的內容和格式,僅當需要輸出時才會確定輸出文本的長度和面積。廢話不說,看代碼
:
var txt:String = "這是一段非常長非常長的文本,即便實際上看上去並不長!";
//定義元素的字型以及格式
var format:ElementFormat = new ElementFormat(new FontDescription("Arial"));
//可惡,還是沒有單位,要是能像CSS中的定義為12px多優美啊
format.fontSize = 12;
var textEle:TextElement = new TextElement(txt, format);
//建立立一個文字區塊,並將文本元素變為其內容
var textBlock;TextBlock = new TextBlock();
textBlock.content = textEle;
/**
* 實際上textBlock.createTextLine有兩個參數,第一個參數是上一行文字物件
* 第二個參數是輸出文本行的寬度,我這裡隨便寫了個50px
*/
var textLine:TextLine = textBlock.createTextLine(null, 50);
//設定文本行的位置
textLine.x = 10;
textLine.y = 10;
addChild(textLine);
//設定第二行文本,為何叫第二行文本,因為在createTextLine的時候指定了上一行是textLine
var textLine2;TextLine = textBlock.createTextLine(textLine, 100);
textLine2.x = 10;
textLine2.y = textLine.y + textLine.height + 10;
addChild(textLine2);
在你的Flash CS4的時間軸上寫下上面的代碼編譯運行看看會有什麼效果?別忘記選擇一下文本看看效果!
在上面的代碼裡,還能看到TextLine這個類,此類相當於是一個文本行,一個文字區塊可以輸出多個文本行,而這些文本行的位置可以任你隨心所欲的放置在舞台上的任何角落,而他們的順序也是你來指定的,很爽吧!
那麼今天的分享先到這裡。
下次分享下強大的GraphicElement, 並且配合今天的分享的知識一起來實現一個更加牛逼的效果!