| 套件 | 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
隱藏繼承公用屬性
顯示繼承公用屬性