套件 | flash.text.engine |
類別 | public final class TextLine |
繼承 | TextLine DisplayObjectContainer InteractiveObject DisplayObject EventDispatcher Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
您不能直接從 ActionScript 程式碼建立 TextLine 物件。如果您呼叫 new TextLine()
,就會擲出例外。若要建立 TextLine 物件,請呼叫 TextBlock 的 createTextLine()
方法。
TextLine 封裝顯示其內容所需的最基本資訊,並透過某些描述文字行 Atom 屬性的方法,提供互動性。Atom 一詞同時可做為圖形元素與字元 (包括結合的字元群組) 來解釋,亦即組成文字行的實體。
在完成文字行的一般事件傳送之後,如果該文字行有效,則事件會鏡像至構成該文字行之內容元素物件的 eventMirror
屬性中指定的事件發送程式。TextLine.mirrorRegions
屬性會記錄這些物件。如果事件散播失敗或停止,或者如果文字行無效,則不會鏡像事件。
滑鼠事件的鏡像處理屬於特殊案例。因為鏡像區域並不是真的顯示物件,所以它們的 mouseOver
和 mouseOut
事件是模擬的。rollOver
和 rollOut
事件則不是模擬的。所有自然發生的 mouseOver
、mouseOut
、rollOver
和 rollOut
事件 (不論是以文字行或文字行的子項目為目標) 都會予以忽略,不為它們進行鏡像處理。
文字行物件的原點是基線的開頭。如果您未針對包含羅馬字基線上拉丁文字的字行設定垂直位置 (y
屬性),只有文字的字母下緣會出現在加入文字行之 Sprite 頂端的下方。請參閱下圖:
TextLine 類別有數個祖系類別 (DisplayObjectContainer、InteractiveObject、DisplayObject 和 EventDispatcher),TextLine 類別會從這些祖系類別繼承屬性與方法。下列繼承的屬性不適用於 TextLine 物件:
-
contextMenu
-
focusRect
-
tabChildren
-
tabEnabled
-
tabIndex
如果您嘗試設定這些屬性,文字引擎會擲回錯誤 IllegalOperationError。您可以讀取這些屬性,但它們一定會包含預設值。
相關 API 元素
屬性 | 定義自 | ||
---|---|---|---|
accessibilityImplementation : AccessibilityImplementation
對此 InteractiveObject 實體目前的輔助功能實作 (AccessibilityImplementation)。 | InteractiveObject | ||
accessibilityProperties : AccessibilityProperties
此顯示物件的目前輔助功能選項。 | DisplayObject | ||
alpha : Number
指出所指定物件的 Alpha 透明度值。 | DisplayObject | ||
ascent : Number [唯讀]
指定此行中從基線開始到最高字元的上方,之間距離多少像素。 | TextLine | ||
atomCount : int [唯讀]
字行中的 Atom 數目,亦即不可分元素的數目,包括空格與圖像元素。 | TextLine | ||
blendMode : String
來自 BlendMode 類別的值,會指定要使用何種混合模式。 | DisplayObject | ||
blendShader : Shader [唯寫]
設定用來混合前景和背景的著色器。 | DisplayObject | ||
cacheAsBitmap : Boolean
如果設定為 true,Flash 執行階段會快取顯示物件的內部點陣圖表示法。 | DisplayObject | ||
cacheAsBitmapMatrix : Matrix
如果為非 null,當 cacheAsBitmap 設定為 true 時,這個 Matrix 物件會定義顯示物件的顯示方法。 | DisplayObject | ||
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
contextMenu : NativeMenu
指定與此物件有關聯的快顯選單。 | InteractiveObject | ||
descent : Number [唯讀]
指定此行中從基線開始到最低字元的下方,之間距離多少像素。 | TextLine | ||
doubleClickEnabled : Boolean
會指定物件是否會收到 doubleClick 事件。 | InteractiveObject | ||
filters : Array
索引的陣列,其中包含目前和顯示物件相關的每個濾鏡物件。 | DisplayObject | ||
focusRect : Object
會指定這個物件是否會顯示焦點矩形。 | InteractiveObject | ||
hasGraphicElement : Boolean [唯讀]
指出文字行是否包含任何圖像元素。 | TextLine | ||
hasTabs : Boolean [唯讀]
指出文字行是否包含任何定位。 | TextLine | ||
height : Number
會指出顯示物件的高度,以像素為單位。 | DisplayObject | ||
loaderInfo : LoaderInfo [唯讀]
會傳回 LoaderInfo 物件,其中包含關於載入此顯示物件所屬之檔案的資訊。 | DisplayObject | ||
mask : DisplayObject
呼叫之顯示物件會以指定的 mask 物件遮蓋。 | DisplayObject | ||
metaData : Object
如果中繼資料是透過 PlaceObject4 標籤與 SWF 檔案中的這個 DisplayObject 實體一同儲存,則會取得 DisplayObject 實體的中繼資料物件。 | DisplayObject | ||
mirrorRegions : Vector.<flash.text.engine:TextLineMirrorRegion> [唯讀]
包含與此行有關之 TextLineMirrorRegion 物件的 Vector,如果沒有任何物件則為 null。 | TextLine | ||
mouseChildren : Boolean
判斷物件的子系是否支援啟用滑鼠或使用者輸入裝置。 | DisplayObjectContainer | ||
mouseEnabled : Boolean
指定此物件是否接收滑鼠或其他使用者輸入及訊息。 | InteractiveObject | ||
mouseX : Number [唯讀]
指出滑鼠或使用者輸入裝置位置的 x 座標,以像素為單位。 | DisplayObject | ||
mouseY : Number [唯讀]
指出滑鼠或使用者輸入裝置位置的 y 座標,以像素為單位。 | DisplayObject | ||
name : String
指出 DisplayObject 的實體名稱。 | DisplayObject | ||
needsSoftKeyboard : Boolean
指定虛擬鍵盤 (螢幕上的軟體鍵盤) 是否應在此 InteractiveObject 實體接收到焦點時顯示。 | InteractiveObject | ||
nextLine : flash.text.engine:TextLine [唯讀]
TextBlock 中的下一個 TextLine,如果目前字行是區塊內的最後一行或是此行的有效性為 TextLineValidity.STATIC,則為 null。 | TextLine | ||
numChildren : int [唯讀]
傳回此物件的子系數量。 | DisplayObjectContainer | ||
opaqueBackground : Object
會指定顯示物件是否不透明,並具有特定背景顏色。 | DisplayObject | ||
parent : DisplayObjectContainer [唯讀]
指出包含此顯示物件的 DisplayObjectContainer 物件。 | DisplayObject | ||
previousLine : flash.text.engine:TextLine [唯讀]
TextBlock 中的上一個 TextLine,如果這是區塊內的第一行或是此行的 validity 為 TextLineValidity.STATIC,則為 null。 | TextLine | ||
rawTextLength : int [唯讀]
文字區塊內變成此行的原始文字長度,包括 U+FDEF 字元,這些字元代表屬於此行的一部分但不會顯示的圖像元素和任何結尾空格。 | TextLine | ||
root : DisplayObject [唯讀]
對載入之 SWF 檔案的顯示物件而言,root 屬性就是該 SWF 檔案所呈現之顯示清單樹狀結構部分的最上層顯示物件。 | DisplayObject | ||
rotation : Number
指出 DisplayObject 實體的旋轉度數 (從該物件原本方向算起)。 | DisplayObject | ||
rotationX : Number
表示 DisplayObject 實體相對於 3D 父輩容器從原始方向旋轉的 x 軸旋轉 (以度數為單位)。 | DisplayObject | ||
rotationY : Number
表示 DisplayObject 實體相對於 3D 父輩容器從原始方向旋轉的 y 軸旋轉 (以度數為單位)。 | DisplayObject | ||
rotationZ : Number
表示 DisplayObject 實體相對於 3D 父輩容器從原始方向旋轉的 z 軸旋轉 (以度數為單位)。 | DisplayObject | ||
scale9Grid : Rectangle
目前產生效用的縮放格線。 | DisplayObject | ||
scaleX : Number
指出從註冊點套用的物件水平縮放 (百分比)。 | DisplayObject | ||
scaleY : Number
指出從物件註冊點套用的物件垂直縮放 (百分比)。 | DisplayObject | ||
scaleZ : Number
指出從物件註冊點套用的物件深度縮放 (百分比)。 | DisplayObject | ||
scrollRect : Rectangle
顯示物件的捲動矩形範圍。 | DisplayObject | ||
softKeyboard : String
控制軟體鍵盤的外觀。 | InteractiveObject | ||
softKeyboardInputAreaOfInterest : Rectangle
定義顯示軟體鍵盤時,應保留於螢幕上的區域 (iOS 未提供)。 | InteractiveObject | ||
specifiedWidth : Number [唯讀]
當 TextBlock.createTextLine() 方法建立此行時,為其指定的寬度。 | TextLine | ||
stage : Stage [唯讀]
顯示物件的「舞台」。 | DisplayObject | ||
tabChildren : Boolean
判斷物件的子系是否支援啟用定位鍵。 | DisplayObjectContainer | ||
tabEnabled : Boolean
會指定這個物件是否在停駐點順序中。 | InteractiveObject | ||
tabIndex : int
會指定 SWF 檔中的物件停駐點順序。 | InteractiveObject | ||
textBlock : flash.text.engine:TextBlock [唯讀]
包含這個文字行的 TextBlock,如果文字行的有效性是 TextLineValidity.STATIC 則為 null,表示在文字行與 TextBlock 之間的連線已經切斷。 | TextLine | ||
textBlockBeginIndex : int [唯讀]
該行第一個字元的索引位於文字區塊的原始文字中。 | TextLine | ||
textHeight : Number [唯讀]
文字行的邏輯高度,等於 ascent + descent。 | TextLine | ||
textSnapshot : flash.text:TextSnapshot [唯讀]
傳回此 DisplayObjectContainer 實體的 TextSnapshot 物件。 | DisplayObjectContainer | ||
textWidth : Number [唯讀]
文字行的邏輯寬度,文字引擎會使用此寬度來配置字行。 | TextLine | ||
totalAscent : Number [唯讀]
指定此行中從基線開始到最高字元或圖形的上方之間距離多少像素。 | TextLine | ||
totalDescent : Number [唯讀]
指定此行中從基線開始到最低字元或圖形的下方之間距離多少像素。 | TextLine | ||
totalHeight : Number [唯讀]
文字行的邏輯高度,等於 totalAscent + totalDescent。 | TextLine | ||
transform : flash.geom:Transform
這是一個物件,具有和顯示物件的矩陣、顏色轉換和像素邊界有關的屬性。 | DisplayObject | ||
unjustifiedTextWidth : Number [唯讀]
字行未對齊時的寬度。 | TextLine | ||
userData : *
提供了讓應用程式將任意資料與文字行產生關聯的方法。 | TextLine | ||
validity : String
指定文字行的目前有效性。 | TextLine | ||
visible : Boolean
不管是否看得見顯示物件。 | DisplayObject | ||
width : Number
會指出顯示物件的寬度,以像素為單位。 | DisplayObject | ||
x : Number
指出 DisplayObject 實體相對於父輩 DisplayObjectContainer 之區域座標的 x 座標。 | DisplayObject | ||
y : Number
指出 DisplayObject 實體相對於父輩 DisplayObjectContainer 之區域座標的 y 座標。 | DisplayObject | ||
z : Number
表示 DisplayObject 實體相對於 3D 父輩容器的 z 座標位置 (沿著 z 軸)。 | DisplayObject |
方法 | 定義自 | ||
---|---|---|---|
將 DisplayObject 子實體加入至此 DisplayObjectContainer 實體。 | DisplayObjectContainer | ||
將 DisplayObject 子實體加入至此 DisplayObjectContainer 實體。 | DisplayObjectContainer | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | EventDispatcher | ||
指出安全性限制是否會造成傳回的清單 (可用指定的 point 點呼叫 DisplayObjectContainer.getObjectsUnderPoint() 方法來取得) 省略任何顯示物件。 | DisplayObjectContainer | ||
判斷指定的顯示物件是否為 DisplayObjectContainer 實體的子系,或為實體本身。 | DisplayObjectContainer | ||
會將事件傳送到事件流程。 | EventDispatcher | ||
將 TextLine 的基礎內容傾印為 XML 字串。 | TextLine | ||
從下列版本以後不建議使用: Flash Player 10.1現在不做任何動作。
這個方法已經不建議使用並且無效果。 | TextLine | ||
取得位於指定索引處之 Atom 的雙向層級。 | TextLine | ||
在指定的索引 (相對於文字行) 上取得 Atom 的邊界。 | TextLine | ||
取得 Atom 的中央 (沿著指定之索引處的基線測量所得)。 | TextLine | ||
取得位於指定索引處之 Atom 的圖像,如果 Atom 為一個字元則為 null。 | TextLine | ||
傳回包含 charIndex 參數指定之字元的 Atom 索引,如果該字元並不會造成此行上的任何 Atom 則為 -1。 | TextLine | ||
傳回 x 和 y 參數指定之點上的 Atom 索引,如果該點沒有 Atom 則為 -1。 | TextLine | ||
取得位於指定索引處之 Atom 的文字區塊開始索引。 | TextLine | ||
取得位於指定索引處之 Atom 的文字區塊結束索引。 | TextLine | ||
取得位於指定索引處之 Atom 的旋轉。 | TextLine | ||
指出文字界限是否會出現在指定索引處的 Atom 左側。 | TextLine | ||
取得相對於 TextBlock.baselineZero 的指定基線位置。 | TextLine | ||
傳回可定義顯示物件區域 (相對於 targetCoordinateSpace 物件的座標系統) 的矩形。 | DisplayObject | ||
傳回存在於指定索引位置的子顯示物件實體。 | DisplayObjectContainer | ||
傳回具有指定名稱的子顯示物件。 | DisplayObjectContainer | ||
傳回 child DisplayObject 實體的索引位置。 | DisplayObjectContainer | ||
傳回此行的第一個 TextLineMirrorRegion,它的 mirror 屬性符合 mirror 參數指定的屬性,如果不相符則為 null。 | TextLine | ||
傳回位於指定點底下,且屬於此 DisplayObjectContainer 實體之子系 (或孫系,以下類推) 的物件陣列。 | DisplayObjectContainer | ||
根據 targetCoordinateSpace 參數所定義的座標系統,並排除形狀上的任何筆畫,傳回可定義顯示物件邊界的矩形。 | DisplayObject | ||
將 point 物件從「舞台」(全域) 座標轉換成顯示物件的 (區域) 座標。 | DisplayObject | ||
將二維點從「舞台」(全域) 座標轉換為三維顯示物件的 (區域) 座標。 | DisplayObject | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
評估顯示物件的範圍框,看它是否與 obj 顯示物件的範圍框重疊或相交。 | DisplayObject | ||
評估顯示物件,看它是否與 x 和 y 參數所指定的點重疊或相交。 | DisplayObject | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
將三維顯示物件的 (區域) 座標的三維點轉換為「舞台」(全域) 座標中的二維點。 | DisplayObject | ||
將 point 物件從顯示物件的 (區域) 座標轉換成「舞台」(全域) 座標。 | DisplayObject | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
將指定的 child DisplayObject 實體從 DisplayObjectContainer 實體的子清單中移除。 | DisplayObjectContainer | ||
從 DisplayObjectContainer 子清單中的指定索引位置移除子 DisplayObject。 | DisplayObjectContainer | ||
將所有 child DisplayObject 實體從 DisplayObjectContainer 實體的子清單中移除。 | DisplayObjectContainer | ||
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | ||
升起顯示虛擬鍵盤。 | InteractiveObject | ||
變更顯示物件容器中現有子系的位置。 | DisplayObjectContainer | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
遞迴停止執行所有 MovieClips 的時間軸根源於此物件。 | DisplayObjectContainer | ||
替換兩個指定子物件的 z 順序 (深度階層,由前至後順序)。 | DisplayObjectContainer | ||
在子清單的兩個指定索引位置,替換子物件的 z 順序 (深度階層,由前至後順序)。 | DisplayObjectContainer | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
常數 | 定義自 | ||
---|---|---|---|
MAX_LINE_WIDTH : int = 1000000 [靜態]
文字行的最大要求寬度 (以像素為單位)。 | TextLine |
ascent | 屬性 |
atomCount | 屬性 |
atomCount:int
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
字行中的 Atom 數目,亦即不可分元素的數目,包括空格與圖像元素。
實作
public function get atomCount():int
擲回值
IllegalOperationError — 此行的 validity 為 TextLineValidity.STATIC 。
|
descent | 屬性 |
hasGraphicElement | 屬性 |
hasTabs | 屬性 |
mirrorRegions | 屬性 |
nextLine | 屬性 |
nextLine:flash.text.engine:TextLine
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
TextBlock 中的下一個 TextLine,如果目前字行是區塊內的最後一行或是此行的有效性為 TextLineValidity.STATIC
,則為 null
。
實作
public function get nextLine():flash.text.engine:TextLine
相關 API 元素
previousLine | 屬性 |
previousLine:flash.text.engine:TextLine
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
TextBlock 中的上一個 TextLine,如果這是區塊內的第一行或是此行的 validity 為 TextLineValidity.STATIC
,則為 null
。
實作
public function get previousLine():flash.text.engine:TextLine
相關 API 元素
rawTextLength | 屬性 |
specifiedWidth | 屬性 |
textBlock | 屬性 |
textBlock:flash.text.engine:TextBlock
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
包含這個文字行的 TextBlock,如果文字行的有效性是 TextLineValidity.STATIC
則為 null,表示在文字行與 TextBlock 之間的連線已經切斷。
實作
public function get textBlock():flash.text.engine:TextBlock
相關 API 元素
textBlockBeginIndex | 屬性 |
textHeight | 屬性 |
textWidth | 屬性 |
textWidth:Number
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
文字行的邏輯寬度,文字引擎會使用此寬度來配置字行。請存取繼承的 width
屬性來取得所有繪製像素之範圍框的實際寬度。
實作
public function get textWidth():Number
相關 API 元素
範例 ( 如何使用本範例 )
specifiedWidth
、textWidth
和 width
屬性的值。追蹤輸出為:
- specifiedWidth 為 500
- textWidth 為 268.9921875
- width 為 269
- specifiedWidth 為 500
- textWidth 為 267.52734375
- width 為 267.55
package { import flash.display.Sprite; import flash.text.engine.TextBlock; import flash.text.engine.TextElement; import flash.text.engine.TextLine; import flash.text.engine.FontDescription; import flash.text.engine.ElementFormat; import flash.text.engine.FontPosture; public class TextLine_textWidthExample extends Sprite { public function TextLine_textWidthExample() { var str:String = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, "; var yPos:Number = 20; var fontDescription:FontDescription = new FontDescription(); var textBlock:TextBlock = new TextBlock(); fontDescription.fontPosture = FontPosture.NORMAL; var format:ElementFormat = new ElementFormat(fontDescription, 12); var textElement:TextElement = new TextElement(str, format); textBlock.content = textElement; createLine(textBlock, yPos); var fontDescriptionItalic = fontDescription.clone(); fontDescriptionItalic.fontPosture = FontPosture.ITALIC; var formatItalic = new ElementFormat(fontDescriptionItalic, 12); textElement = new TextElement(str, formatItalic); textBlock.content = textElement; createLine(textBlock, yPos + 20); } private function createLine(textBlock:TextBlock, yPos:Number):void { var textLine:TextLine = textBlock.createTextLine (null, 500); trace("specifiedWidth is: " + textLine.specifiedWidth); trace("textWidth is: " + textLine.textWidth); trace("width is: " + textLine.width); addChild(textLine); textLine.x = 15; textLine.y = yPos; } } }
totalAscent | 屬性 |
totalDescent | 屬性 |
totalHeight | 屬性 |
unjustifiedTextWidth | 屬性 |
unjustifiedTextWidth:Number
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
字行未對齊時的寬度。如果是未對齊的文字,此值與 textWidth
相同。如果是對齊的文字,此值為未強制齊行時的長度,而且 textWidth
代表實際的字行寬度。例如,當對齊並送出下列 String 至具有寬度 500 的 TextBlock.createTextLine()
時,它的實際寬度為 500,但未對齊的寬度為 268.9921875。
實作
public function get unjustifiedTextWidth():Number
相關 API 元素
範例 ( 如何使用本範例 )
import flash.display.Sprite; import flash.text.engine.TextBlock; import flash.text.engine.TextElement; import flash.text.engine.TextLine; import flash.text.engine.FontDescription; import flash.text.engine.ElementFormat; import flash.text.engine.SpaceJustifier; import flash.text.engine.LineJustification; var str:String = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, "; var fontDescription:FontDescription = new FontDescription(); var textBlock:TextBlock = new TextBlock(); var format:ElementFormat = new ElementFormat(fontDescription, 12); var textElement:TextElement = new TextElement(str, format); textBlock.content = textElement; var spaceJustifier:SpaceJustifier = new SpaceJustifier("en", LineJustification.ALL_INCLUDING_LAST); textBlock.textJustifier = spaceJustifier; var textLine:TextLine = textBlock.createTextLine(null, 500); textLine.y = 20; addChild(textLine); trace("textWidth value is: " + textLine.textWidth); // 500.00244140625 trace("unjustifiedTextWidth is: " + textLine.unjustifiedTextWidth); // 268.9921875
userData | 屬性 |
public var userData:*
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
提供了讓應用程式將任意資料與文字行產生關聯的方法。
validity | 屬性 |
validity:String
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
指定文字行目前的有效性。此屬性的值可在 TextLineValidity
類別的成員中找到。設定此屬性的規則如下:
如果有效性設定為不屬於 TextLineValidity
成員的任何字串,行會被視為 USER_INVALID。USER_INVALID 是一種抽象觀念,用在這裡可代表任何的這類值。
當修改了 TextBlock 的內容時,Flash 執行階段會將受影響的文字行、上一行及之後的所有行標示為 INVALID。當變更允許上一行吸收原本位於第一個受影響字行上的內容一部分時,上一行就必須標示為 invalid。
新的斷行一定是 VALID。Flash 執行階段可能會將下列幾行從 VALID 變更為 POSSIBLY_INVALID 或 INVALID。如果斷行相符,它可能會將 POSSIBLY_INVALID 行變更為 VALID,如果不相符則變更為 INVALID。
應用程式程式碼可將 VALID 行標示為 INVALID 或 USER_INVALID,而且可將 USER_INVALID 行標示為 VALID。應用程式程式碼無法將行標示為 POSSIBLY_INVALID。
應用程式程式碼可以將任何行標示為 STATIC。這樣做會使得 block
成員變成 null
。如果 STATIC 文字行中的任何圖像元素屬於文字區塊中新文字斷行的一部分 (STATIC 文字行一開始是衍生自此文字區塊),將會移除這些圖像元素並重新改變其父輩。
實作
public function get validity():String
public function set validity(value:String):void
擲回值
ArgumentError — 如果目前的值為 TextLineValidity.STATIC 。
| |
ArgumentError — 如果目前的值為 TextLineValidity.INVALID ,而新值為 TextValidity.STATIC 以外的任何值。
| |
ArgumentError — 如果目前的值為 TextLineValidity.POSSIBLY_INVALID ,而新值為 TextLineValidity.VALID 。
| |
ArgumentError — 如果新值為 TextLineValidity.POSSIBLY_INVALID 。
|
相關 API 元素
dump | () | 方法 |
public function dump():String
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5 |
將 TextLine 的基礎內容傾印為 XML 字串。在自動化測試中,這樣的處理非常有用,而且包括了文字、格式化和版面資訊。
以下說明該輸出:
[LINE] <line ascent=[Number] descent=[Number] rotation=[int]> <elements> [0-N ELEMENT] </elements> <clusters> [0-N CLUSTER] </clusters> </line> [ELEMENT] <glyph isEmbedded=[Boolean] fontName=[String] isBold=[Boolean] isItalic=[Boolean] gid=[int] pointSize=[Number] x=[Number] y=[Number] rotation=[int]/> or <graphic child=[int] x=[Number] y=[Number] rotation=[int]/> or <embeddedRun x=[Number] y=[Number]> [LINE] </embeddedRun> [CLUSTER] <cluster xLeft=[Number] xCenter=[Number] xRight=[Number] cursorOnLeft=[Boolean] cursorOnRight=[Boolean] wordBoundaryOnLeft=[Boolean] wordBoundaryOnRight=[Boolean]/>
注意:來自此方法的輸出內容與格式未來可能有所變更。Adobe 不保證對此方法提供舊版相容。
傳回值String |
相關 API 元素
flushAtomData | () | 方法 |
public function flushAtomData():void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
這個方法已經不建議使用並且無效果。Atom 資料已經壓縮,並且不會影響管理記憶體效率。
相關 API 元素
getAtomBidiLevel | () | 方法 |
public function getAtomBidiLevel(atomIndex:int):int
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
取得位於指定索引處之 Atom 的雙向層級。由 TextBlock.bidiLevel
以及文字行構成字元的 Unicode 雙向屬性組合決定。
例如,如果文字區塊以一些希伯來文字為開頭,您要將 TextBlock.bidiLevel
設定為 1,這會建立由右至左的預設文字方向。如果這些文字內有英文 (由左至右) 的引文,該文字的 AtomBidiLevel
為 2。如果英文內有一些阿拉伯文 (由右至左),該連續文字的 AtomBidiLevel
會是 3。如果阿拉伯文內有數字 (由左至右),則數字的 AtomBidiLevel
設定為 4。無論 Atom 最後出現在哪一行,希伯來文 Atom 為 AtomBidiLevel
1,英文 Atom 為 AtomBidiLevel
2,阿拉伯文 Atom 為 AtomBidiLevel
3,數字 Atom 為 AtomBidiLevel
4。
參數
atomIndex:int — Atom 的索引值 (從零開始,例如,第一個 Atom 是 0,第二個 Atom 是 1,依此類推)。
|
int — 位於 atomIndex 之 Atom 的雙向層級。
|
擲回值
RangeError — 指定的 Atom 索引超出範圍。
| |
IllegalOperationError — 此行的 validity 為 TextLineValidity.STATIC 。
|
相關 API 元素
getAtomBounds | () | 方法 |
public function getAtomBounds(atomIndex:int):Rectangle
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
在指定的索引 (相對於文字行) 上取得 Atom 的邊界。指定之 Atom 的邊界包含該行中自己的水平位置 (x
)、該行中自己的垂直位置 (y
)、自己的寬度 (w
) 以及自己的高度 (h
)。所有值都是以像素為單位。
參數
atomIndex:int — Atom 的索引值 (從零開始,例如,第一個 Atom 是 0,第二個 Atom 是 1,依此類推)。
|
Rectangle — 位於 atomIndex 之 Atom 的邊界。
|
擲回值
RangeError — 指定的 Atom 索引超出範圍。
| |
IllegalOperationError — 此行的 validity 為 TextLineValidity.STATIC 。
|
getAtomCenter | () | 方法 |
public function getAtomCenter(atomIndex:int):Number
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
取得 Atom 的中央 (沿著指定之索引處的基線測量所得)。
參數
atomIndex:int — Atom 的索引值 (從零開始,例如,第一個 Atom 是 0,第二個 Atom 是 1,依此類推)。
|
Number — 位於 atomIndex 之 Atom 的中央。
|
擲回值
RangeError — 指定的 Atom 索引超出範圍。
| |
IllegalOperationError — 此行的 validity 為 TextLineValidity.STATIC 。
|
getAtomGraphic | () | 方法 |
public function getAtomGraphic(atomIndex:int):DisplayObject
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
取得位於指定索引處之 Atom 的圖像,如果 Atom 為一個字元則為 null
。
參數
atomIndex:int — Atom 的索引值 (從零開始,例如,第一個 Atom 是 0,第二個 Atom 是 1,依此類推)。
|
DisplayObject — 位於 atomIndex 之 Atom 的圖像。
|
擲回值
RangeError — 指定的 Atom 索引超出範圍。
| |
IllegalOperationError — 此行的 validity 為 TextLineValidity.STATIC 。
|
getAtomIndexAtCharIndex | () | 方法 |
public function getAtomIndexAtCharIndex(charIndex:int):int
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
傳回包含 charIndex
參數指定之字元的 Atom 索引,如果該字元並不會造成此行上的任何 Atom 則為 -1。charIndex
相對於包含此行之文字區塊的整個內容。
參數
charIndex:int — 字元的索引值 (從零開始,例如,第一個字元是 0,第二個字元是 1,依此類推)。
|
int — 包含位於 charIndex 之字元的 Atom 索引。如果該字元並不會造成此行上的任何 Atom,則會傳回 -1。
|
擲回值
IllegalOperationError — 此行的 validity 為 TextLineValidity.STATIC 。
|
getAtomIndexAtPoint | () | 方法 |
public function getAtomIndexAtPoint(stageX:Number, stageY:Number):int
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
傳回 x
和 y
參數指定之點上的 Atom 索引,如果該點沒有 Atom 則為 -1。
此方法會採用全域座標,以便輕易地搭配 MouseEvent.stageX
和 MouseEvent.stageY
屬性一起使用。
參數
stageX:Number — 要測試之點的全域 x 座標。
| |
stageY:Number — 要測試之點的全域 y 座標。
|
int — 此點底下之 Atom 的索引。如果該點不在任何 Atom 上方,則會傳回 -1。
|
擲回值
IllegalOperationError — 此行的 validity 為 TextLineValidity.STATIC 。
|
getAtomTextBlockBeginIndex | () | 方法 |
public function getAtomTextBlockBeginIndex(atomIndex:int):int
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
取得位於指定索引處之 Atom 的文字區塊開始索引。
參數
atomIndex:int — Atom 的索引值 (從零開始,例如,第一個 Atom 是 0,第二個 Atom 是 1,依此類推)。
|
int — 位於 atomIndex 之 Atom 的文字區塊開始索引。
|
擲回值
RangeError — 指定的 Atom 索引超出範圍。
| |
IllegalOperationError — 此行的 validity 為 TextLineValidity.STATIC 。
|
getAtomTextBlockEndIndex | () | 方法 |
public function getAtomTextBlockEndIndex(atomIndex:int):int
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
取得位於指定索引處之 Atom 的文字區塊結束索引。
參數
atomIndex:int — Atom 的索引值 (從零開始,例如,第一個 Atom 是 0,第二個 Atom 是 1,依此類推)。
|
int — 位於 atomIndex 之 Atom 的文字區塊結尾索引。
|
擲回值
RangeError — 指定的 Atom 索引超出範圍。
| |
IllegalOperationError — 此行的 validity 為 TextLineValidity.STATIC 。
|
getAtomTextRotation | () | 方法 |
public function getAtomTextRotation(atomIndex:int):String
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
取得位於指定索引處之 Atom 的旋轉。這個屬性會用到 TextRotation 常數。Atom 的旋轉是元素和文字行的累積旋轉。它的主要用途在於與 TextLine 互動時設定跳脫字元 (游標) 的方向。
參數
atomIndex:int — Atom 的索引值 (從零開始,例如,第一個 Atom 是 0,第二個 Atom 是 1,依此類推)。
|
String — 位於 atomIndex 之 Atom 的旋轉。
|
擲回值
RangeError — 指定的 Atom 索引超出範圍。
| |
IllegalOperationError — 此行的 validity 為 TextLineValidity.STATIC 。
|
相關 API 元素
getAtomWordBoundaryOnLeft | () | 方法 |
public function getAtomWordBoundaryOnLeft(atomIndex:int):Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
指出文字界限是否會出現在指定索引處的 Atom 左側。單字界限會依據字元的 Unicode 屬性 (這些字元構成字行) 來決定。
參數
atomIndex:int — Atom 的索引值 (從零開始,例如,第一個 Atom 是 0,第二個 Atom 是 1,依此類推)。
|
Boolean — Boolean 值,指出文字界限是否會出現在 atomIndex 處的 Atom 左側。
|
擲回值
RangeError — 指定的 Atom 索引超出範圍。
| |
IllegalOperationError — 此行的 validity 為 TextLineValidity.STATIC 。
|
getBaselinePosition | () | 方法 |
public function getBaselinePosition(baseline:String):Number
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
取得相對於 TextBlock.baselineZero
的指定基線位置。
參數
baseline:String — 要據此擷取位置的基線。使用 TextBaseline 值。
|
Number — 指定基線的位置 (相對於 TextBlock.baselineZero )。
|
擲回值
ArgumentError — 如果指定的 baseline 不是 TextBaseline 的成員。
|
相關 API 元素
getMirrorRegion | () | 方法 |
public function getMirrorRegion(mirror:EventDispatcher):flash.text.engine:TextLineMirrorRegion
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
傳回此行的第一個 TextLineMirrorRegion
,它的 mirror
屬性符合 mirror
參數指定的屬性,如果不相符則為 null
。
即使是單一 TextElement
也可以在一行或多行上產生多個 TextLineMirrorRegion
物件 (取決於雙向層級和斷行)。nextRegion
和 previousRegion
屬性會連結從一個文字元素所產生的所有鏡像區域。
參數
mirror:EventDispatcher — 要搜尋的 EventDispatcher mirror 物件。
|
flash.text.engine:TextLineMirrorRegion — 此行的第一個 TextLineMirrorRegion ,它的 mirror 屬性符合指定的值,如果不相符則為 null 。
|
相關 API 元素
MAX_LINE_WIDTH | 常數 |
public static const MAX_LINE_WIDTH:int = 1000000
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
文字行的最大要求寬度 (以像素為單位)。如果您未指定值,TextBlock.createTextLine()
方法會使用此常數做為 width
參數的預設值。
相關 API 元素
getAtomBounds()
來為每個 Atom 加上影格)。
- 將 NumericStepper 組件加入元件庫。
- 將此程式碼另存為 TextLineExample.as,並與 FLA 放在同一個目錄中。
- 在 FLA 的「屬性」視窗中,將「類別」設定為 TextLineExample。
package { import flash.display.Sprite; import flash.text.engine.TextBlock; import flash.text.engine.TextElement; import flash.text.engine.TextLine; import flash.text.engine.ElementFormat; import flash.text.engine.FontDescription; import flash.text.engine.FontPosture; import flash.text.engine.FontWeight; import fl.controls.NumericStepper; import flash.events.Event; import flash.geom.Rectangle; public class TextLineExample extends Sprite { private var atomStepper:NumericStepper = new NumericStepper(); private var atomDataContainer:Sprite; private var fontDescriptionItalic:FontDescription = new FontDescription("Arial", FontWeight.NORMAL, FontPosture.ITALIC); private var fontDescriptionNormal:FontDescription = new FontDescription("Arial", FontWeight.NORMAL , FontPosture.NORMAL); private var textBlock:TextBlock = new TextBlock(); private var textLine:TextLine; public function TextLineExample():void { var myText:String = "I am a TextElement, created from a String and assigned " + "to the content property of a TextBlock. From the text block, " + "the createTextLine() method created these lines, 300 pixels wide, " + "for display." ; atomStepper.minimum = 0; atomStepper.value = 0; atomStepper.width = 50; addChild(atomStepper); atomStepper.x = 20; atomStepper.y = 120; atomStepper.addEventListener(Event.CHANGE, nsChange); var directions:String = "Click up / down arrows to frame atoms in text block above."; var formatItalic:ElementFormat = new ElementFormat(fontDescriptionItalic); formatItalic.fontSize = 12; var textElement1:TextElement = new TextElement(directions, formatItalic); textBlock.content = textElement1; createLines(textBlock, 15, 160, 400, this); var formatNormal:ElementFormat = new ElementFormat(fontDescriptionNormal); formatNormal.fontSize = 16; var textElement2:TextElement = new TextElement(myText, formatNormal); textBlock.content = textElement2; createLines(textBlock, 15.0, 20.0, 300, this); textLine = textBlock.firstLine; atomStepper.maximum = textLine.atomCount - 1; showAtom(textLine, 0); } private function nsChange(event:Event):void { removeAtom(textLine); if (atomStepper.value == textLine.atomCount - 1) { if(textLine != textBlock.lastLine) { textLine = textLine.nextLine; atomStepper.maximum = textLine.atomCount - 1; atomStepper.value = 0; } } showAtom(textLine, atomStepper.value); } private function createLines(textBlock, startX, startY, width, container) { var textLine:TextLine = textBlock.createTextLine (null, width); while (textLine) { textLine.x = startX; textLine.y = startY; startY += textLine.height + 2; container.addChild(textLine); textLine = textBlock.createTextLine (textLine, width); } } private function showAtom(textLine, i):void { var box:Sprite = new Sprite(); var mcGraphics = box.graphics; var bounds:Rectangle = textLine.getAtomBounds(i); mcGraphics.lineStyle(1, 0xFF0000, 1.0); mcGraphics.drawRect(bounds.left, bounds.top, bounds.width, bounds.height); textLine.userData = textLine.addChild(box); displayAtomData(textLine,i); } private function displayAtomData(textLine, i) { if(atomDataContainer != null) removeChild(atomDataContainer); atomDataContainer=new Sprite(); var format = new ElementFormat(fontDescriptionNormal); format.color = 0x00000FF; var n:int = 0; var nxtY:Number = 0; var atomInfo:String = "value of getAtomBidiLevel() is: " + textLine.getAtomBidiLevel(i)+"\n" +"value of getAtomCenter() is: " + textLine.getAtomCenter(i)+"\n" +"value of getAtomIndexAtCharIndex() is: " + textLine.getAtomIndexAtCharIndex(i)+"\n" +"value of getAtomTextBlockBeginIndex() is: " + textLine.getAtomTextBlockBeginIndex(i)+"\n" +"value of getAtomTextBlockEndIndex() is: " + textLine.getAtomTextBlockEndIndex(i)+"\n" +"value of getAtomTextRotation() is: " + textLine.getAtomTextRotation(i)+"\n"; var atomtextBlock:TextBlock = new TextBlock(); var textElement3:TextElement = new TextElement(atomInfo, format); atomtextBlock.content = textElement3; createLines(atomtextBlock,20,200,500, atomDataContainer) addChild(atomDataContainer); } private function removeAtom(textLine):void { textLine.removeChild(textLine.userData); } } }
Tue Jun 12 2018, 03:47 PM Z