套件 | flash.text |
類別 | public class TextLineMetrics |
繼承 | TextLineMetrics Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
flash.text.TextField.getLineMetrics()
方法會傳回此類別的物件。
如需瞭解與包含文字行之文字欄位有關的度量 (例如,圖中的「文字欄位高度」),請參閱 flash.text.TextField。
下圖指出文字欄位的點與度量,以及該欄位所包含的文字行,
相關 API 元素
屬性 | 定義自 | ||
---|---|---|---|
ascent : Number
文字的上方值是從基線到字行頂端的長度,以像素為單位。 | TextLineMetrics | ||
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
descent : Number
文字的下方值是從基線到字行底端的長度,以像素為單位。 | TextLineMetrics | ||
height : Number
選取字行 (不一定是完整的文字) 的文字高度值,以像素為單位。 | TextLineMetrics | ||
leading : Number
間距值是文字行之間的垂直距離度量。 | TextLineMetrics | ||
width : Number
寬度值是選取之字行 (不一定是完整的文字) 的文字寬度,以像素為單位。 | TextLineMetrics | ||
x : Number
x 值是第一個字元的左邊位置,以像素為單位。 | TextLineMetrics |
方法 | 定義自 | ||
---|---|---|---|
TextLineMetrics(x:Number, width:Number, height:Number, ascent:Number, descent:Number, leading:Number)
會建立 TextLineMetrics 物件。 | TextLineMetrics | ||
指出物件是否有已定義的指定屬性。 | Object | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object |
ascent | 屬性 |
public var ascent:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
文字的上方值是從基線到字行頂端的長度,以像素為單位。 請參閱此類別概觀圖表中的「上緣線」度量。
相關 API 元素
descent | 屬性 |
public var descent:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
文字的下方值是從基線到字行底端的長度,以像素為單位。 請參閱此類別概觀圖表中的「下緣線」度量。
相關 API 元素
height | 屬性 |
public var height:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
選取字行 (不一定是完整的文字) 的文字高度值,以像素為單位。 文字行的高度不包括間距高度。 請參閱此類別概觀圖表中的「行高」度量。
相關 API 元素
leading | 屬性 |
public var leading:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
間距值是文字行之間的垂直距離度量。 請參閱此類別概觀圖表中的「行距」度量。
相關 API 元素
width | 屬性 |
public var width:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
寬度值是選取之字行 (不一定是完整的文字) 的文字寬度,以像素為單位。 文字行的寬度與文字欄位的寬度不同。 文字欄位寬度減掉 4 像素的間距寬度 (每邊各有 2 像素),就是文字行的寬度。 請參閱此類別概觀圖表中的「文字行寬度」度量。
相關 API 元素
x | 屬性 |
public var x:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
x 值是第一個字元的左邊位置,以像素為單位。 這個值包含邊界、縮排 (如果存在),以及間距寬度。 請參閱此類別概觀圖解中的「文字行 x 位置」。
相關 API 元素
TextLineMetrics | () | 建構函式 |
public function TextLineMetrics(x:Number, width:Number, height:Number, ascent:Number, descent:Number, leading:Number)
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會建立 TextLineMetrics 物件。 TextLineMetrics 物件包含文字欄位中,文字行之文字對照表的相關資訊。 flash.text.TextField.getLineMetrics()
方法會傳回此類別的物件。
如需瞭解相關屬性的內容,請參閱本類別概觀中的圖表。
參數x:Number — 第一個字元的左邊位置,以像素為單位。
| |
width:Number — 選取字行 (不一定是完整的文字) 的文字寬度,以像素為單位。
| |
height:Number — 選取字行 (不一定是完整的文字) 的文字高度,以像素為單位。
| |
ascent:Number — 從字行的基線到頂端的長度,以像素為單位。
| |
descent:Number — 從字行的基線到底端的長度,以像素為單位。
| |
leading:Number — 文字行之間的垂直距離度量。
|
相關 API 元素
- 建立名為
label
、類型為 TextField 的屬性。 - 建構函式會呼叫
configureAssets()
,以進行下列動作:- 將舞台的對齊方式設定為靠左上與不縮放。
- 建立名為
label
的新 TextField 物件。 - 啟用
label
的背景,並將顏色設定為白色。 - 允許
label
的文字以自動換行的方式跨越多行。 - 將對
getLabelText()
呼叫的結果指定給label
的text
屬性。getLabelText()
方法會建立一個 XML 型態的變數,並將它指定給名為body
(已經填入一段長句子) 的 XML 節點。 - 使用
addChild()
,將label
新增至顯示清單。
- 然後便新增會偵聽在舞台上執行之
resize
事件的方法,該方法稱為resizeHandler()
。 每當 Flash Player 視窗大小變更時,就會送出RESIZE
事件並引發下列事項:- 呼叫
draw()
以確定label
是出現在舞台的中央並以 10 個緩衝像素括住。 - 然後,
setTimeout()
便會在短暫的延遲後執行showMetrics()
。 由於在完成RESIZE
事件以及完整重繪舞台之前,並不會更新字行對照表,因此必須加入延遲時間。 showMetrics()
會指定 TextLineMetrics 變數metrics
做為呼叫getLineMetrics()
的結果,接著將這個變數傳遞給 LineMetricsReader 實體reader
的新實體。 然後在呼叫trace()
內使用這兩個變數,印出label
的第一行 (只有一行),以及由 LineMetricsReader 實體透過它的toString()
方法所提供的資訊。
- 呼叫
- 在第一次載入 SWF 檔案時,建構函式會強制傳送一個
resize
事件,以強制繪製正確的label
。
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.*; import flash.text.TextField; import flash.text.TextLineMetrics; import flash.utils.setTimeout; public class TextLineMetricsExample extends Sprite { private var gutter:int = 10; private var label:TextField; public function TextLineMetricsExample() { configureAssets(); configureListeners(); resizeHandler(new Event(Event.RESIZE)); } private function showMetrics():void { var metrics:TextLineMetrics = label.getLineMetrics(0); var reader:LineMetricsReader = new LineMetricsReader(metrics); trace("lineText: " + label.getLineText(0)); trace("metrics: " + reader); } private function configureAssets():void { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; label = new TextField(); label.background = true; label.backgroundColor = 0xFFFFFF; label.multiline = true; label.wordWrap = true; label.text = getLabelText(); addChild(label); } private function configureListeners():void { stage.addEventListener(Event.RESIZE, resizeHandler); } private function resizeHandler(event:Event):void { draw(); setTimeout(showMetrics, 100); } private function draw():void { label.x = gutter; label.y = gutter; label.width = stage.stageWidth - (gutter * 2); label.height = stage.stageHeight - (gutter * 2); } private function getLabelText():String { var text:XML = <body>The Flex product line enables developers to build rich Internet applications that blend the responsiveness of desktop software, the cross-platform reach of the web, and the expressiveness of the Flash Platform.</body> return text.toString(); } } } import flash.text.TextLineMetrics; class LineMetricsReader { private var metrics:TextLineMetrics; public function LineMetricsReader(metrics:TextLineMetrics) { this.metrics = metrics; } public function toString():String { return "[TextLineMetrics ascent:" + metrics.ascent + ", descent:" + metrics.descent + ", leading:" + metrics.leading + ", width:" + metrics.width + ", height:" + metrics.height + ", x:" + metrics.x + "]"; } }
Tue Jun 12 2018, 03:47 PM Z