適用於 Adobe® Flash® Platform 的 ActionScript® 3.0 參考
首頁  |  隱藏套件和類別清單 |  套件  |  類別  |  新增內容  |  索引  |  附錄  |  為什麼顯示英文?
篩選: 從伺服器擷取資料...
從伺服器擷取資料...
flashx.textLayout.compose 

IFlowComposer  - AS3

套件flashx.textLayout.compose
介面public interface IFlowComposer
實作者 StandardFlowComposer

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

IFlowComposer 會定義用來管理文字流排版面和顯示的介面。

透過流排撰寫器實作而顯示的文字流排可以是動態或互動式。流排撰寫器可管理一或多個顯示控制器。每個控制器都會有一個相關的顯示物件容器 (例如 Sprite),為文字流排建立的行最終會經由此容器而顯示。下圖會說明 TextFlow、IFlowComposer、ContainerController 以及 DisplayObjectContainer 物件之間的關係:

IFlowComposer

流排撰寫器會計算文字流排的哪一部分適合每個容器,然後將適當的文字行新增至容器的顯示物件。IFlowComposer 介面可定義不同的方法,以用來計算版面與更新顯示。IFlowComposer 也可定義以增量方式來撰寫與更新文字流排的方法。您可以使用這些方法,避免在更新很長的文字流排時導致使用者介面被阻塞。

除了管理文字撰寫與顯示外,流排撰寫器還可控制哪個容器具有焦點、管理選取項目反白部分的顯示 (可以超出容器邊界),以及對流排中的所有 TextLine 物件提供直接存取。

若要使用 IFlowComposer 實作,請將該實作實體指定至 TextFlow 物件的 flowComposer 屬性。呼叫 updateAllControllers() 方法,以配置與顯示附加至流排撰寫器容器中的文字。

注意:對於簡單的靜態的文字流排,您也可以使用文字行 factory 類別之一。使用這些 factory 類別建立文字行,通常比使用流排撰寫器更簡易,但不支援編輯、動態變更或使用者互動。

相關 API 元素



公用屬性
 屬性定義自
  composing : Boolean
[唯讀] 如果流排撰寫器目前正在執行撰寫作業則為 true。
IFlowComposer
  damageAbsoluteStart : int
[唯讀] 根元素中第一個無效的位置,即從流排開頭算起的絕對位置。
IFlowComposer
  numControllers : int
[唯讀] 指定至此 IFlowComposer 實體的容器數目。
IFlowComposer
  numLines : int
[唯讀] 撰寫於流排中的總行數。
IFlowComposer
  rootElement : ContainerFormattedElement
[唯讀] 與此 IFlowComposer 實體相關的根元素。
IFlowComposer
  swfContext : ISWFContext
必須在 IFlowComposer 特定 SWF 內容實作中建立之呼叫所用的 ISWFContext 實體,應允許設定此屬性,讓介面的使用者可在不同的 SWF 內容中建立文字行,而非在包含實作的 SWF 內容中。
IFlowComposer
公用方法
 方法定義自
  
將控制器新增至此 IFlowComposer 實體。
IFlowComposer
  
將控制器新增至位於指定索引的這個 IFlowComposer 實體。
IFlowComposer
  
計算需要多少行才能在流排的根元素中顯示內容,以及這些行在流排的顯示容器中的位置。
IFlowComposer
  
撰寫根元素的內容包含到指定索引中的容器為止 (含此容器)。
IFlowComposer
  
composeToPosition(absolutePosition:int):Boolean
撰寫根元素的內容到指定的位置為止。
IFlowComposer
  
damage(startPosition:int, damageLength:int, damageType:String):void
將行標示為損壞,需要重新撰寫。
IFlowComposer
  
findControllerIndexAtPosition(absolutePosition:int, preferPrevious:Boolean = false):int
傳回包含指定位置之內容的控制器索引。
IFlowComposer
  
findLineAtPosition(absolutePosition:int, preferPrevious:Boolean = false):flashx.textLayout.compose:TextFlowLine
傳回包含指定位置之內容的 TextFlowLine 物件。
IFlowComposer
  
findLineIndexAtPosition(absolutePosition:int, preferPrevious:Boolean = false):int
傳回包含指定位置之內容的 TextFlowLine 物件連續行編號。
IFlowComposer
  
傳回位於指定索引的 ContainerController 物件。
IFlowComposer
  
傳回指定之 ContainerController 物件的索引。
IFlowComposer
  
傳回具有指定行編號的那一行。
IFlowComposer
  
一旦互動管理員有所變更時,就由 TextFlow 呼叫。
IFlowComposer
  
isDamaged(absolutePosition:int):Boolean
指示流排開頭與包含位於指定位置之內容的該行之間,是否有任何 TextFlowLine 物件標示為已損毀。
IFlowComposer
  
從這個 IFlowComposer 實體移除所有控制器。
IFlowComposer
  
從這個 IFlowComposer 實體移除控制器。
IFlowComposer
  
從這個 IFlowComposer 實體移除位於指定索引的控制器。
IFlowComposer
  
setFocus(absolutePosition:int, preferPrevious:Boolean = false):void
將焦點設為包含 absolutePosition 參數所指定位置的容器。
IFlowComposer
  
IFlowComposer
  
撰寫根元素的內容並更新顯示。
IFlowComposer
  
updateLengths(startPosition:int, deltaLength:int):void
更新行長度以維持與 TextFlow 的對應。
IFlowComposer
  
撰寫並更新顯示的範圍到指定索引中的容器為止 (含此容器)。
IFlowComposer
屬性詳細資訊

composing

屬性
composing:Boolean  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

如果流排撰寫器目前正在執行撰寫作業則為 true。



實作
    public function get composing():Boolean

damageAbsoluteStart

屬性 
damageAbsoluteStart:int  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

根元素中第一個無效的位置,即從流排開頭算起的絕對位置。



實作
    public function get damageAbsoluteStart():int

numControllers

屬性 
numControllers:int  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

指定至此 IFlowComposer 實體的容器數目。



實作
    public function get numControllers():int

numLines

屬性 
numLines:int  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

撰寫於流排中的總行數。根據預設,TLF 不會撰寫整個流排,而此值可能不正確。使用 composeToPosition 來取得撰寫的所有行。



實作
    public function get numLines():int

rootElement

屬性 
rootElement:ContainerFormattedElement  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

與此 IFlowComposer 實體相關的根元素。

只有一個 TextFlow 物件可以是根元素。



實作
    public function get rootElement():ContainerFormattedElement

相關 API 元素

swfContext

屬性 
swfContext:ISWFContext

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

必須在特定 SWF 內容中建立之呼叫所用的 ISWFContext 實體

IFlowComposer 的實作應該允許設定此屬性,讓介面的使用者可以在不同的 SWF 內容 (不是包含該實作的 SWF 內容) 中建立文字行。另外也應提供預設的 ISWFContext 實作。



實作
    public function get swfContext():ISWFContext
    public function set swfContext(value:ISWFContext):void

相關 API 元素

ISWFContext
方法詳細資訊

addController

()方法
public function addController(controller:ContainerController):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

將控制器新增至此 IFlowComposer 實體。

容器會新增至容器清單的結尾。

參數

controller:ContainerController — 要新增的 ContainerController 物件。

addControllerAt

()方法 
public function addControllerAt(controller:ContainerController, index:int):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

將控制器新增至位於指定索引的這個 IFlowComposer 實體。

控制器清單是從 0 開始 (第一個控制器的索引是 0)。

參數

controller:ContainerController — 要新增的 ContainerController 物件。
 
index:int — 數值索引,指定控制器清單中要插入 ContainerController 物件的位置。

compose

()方法 
public function compose():Boolean

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

計算需要多少行才能在流排的根元素中顯示內容,以及這些行在流排的顯示容器中的位置。

此方法的實作應該不會更新顯示,但所有結果都會予以儲存,因此只要流排內容未變更,之後呼叫 compose()updateAllControllers() 時就不會另行重新撰寫。

如果任一容器的內容已經變更,此方法必須傳回 true

傳回值
Boolean — 如果有任何變更則為 true。

相關 API 元素

composeToController

()方法 
public function composeToController(index:int):Boolean

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

撰寫根元素的內容包含到指定索引中的容器為止 (含此容器)。

如果到指定之索引為止的任一容器 (含此容器) 內容已變更,此方法就會傳回 true。如果 index 大於控制器數目 (或未指定),則撰寫所有容器。

參數

index:int (default = NaN) — 撰寫範圍至少包含到 TextFlow 的這個容器為止。如果 controllerIndex 大於控制器的數目,請於最後容器的結尾撰寫。

傳回值
Boolean — 如果有任何變更則為 true。

相關 API 元素

composeToPosition

()方法 
public function composeToPosition(absolutePosition:int):Boolean

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

撰寫根元素的內容到指定的位置為止。

如果到指定之位置為止的任一容器 (含此容器) 內容已變更,此方法就會傳回 true。如果 absolutePosition 大於 TextFlow 的長度 (或未指定),則撰寫整個流排。

參數

absolutePosition:int (default = NaN) — 撰寫範圍至少包含到 TextFlow 的這個位置為止。根據預設或如果 absolutePosition 超過流排的結尾,請於流排的結尾撰寫。

傳回值
Boolean — 如果有任何變更則為 true。

相關 API 元素

damage

()方法 
public function damage(startPosition:int, damageLength:int, damageType:String):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

將行標示為損壞,需要重新撰寫。

參數

startPosition:int — 損壞範圍的開頭
 
damageLength:int — 損壞字元的數目
 
damageType:String — 損壞類型flashx.textLayout.compose.FlowDamageType 之一

相關 API 元素

findControllerIndexAtPosition

()方法 
public function findControllerIndexAtPosition(absolutePosition:int, preferPrevious:Boolean = false):int

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

傳回包含指定位置之內容的控制器索引。

您可以將位置想成是文字流排兩個字元或其他元素之間的標度。如果 absolutePosition 的值是介於某一容器的最後一個字元與下一個容器的第一個字元之間的位置,則當 preferPrevious 參數設為 true 時,會傳回前一個容器,而當 preferPrevious 參數設為 false 時,則會傳回後一個容器。

如果指定位置的內容不在任何容器中,或位於文字流排位置的範圍以外,此方法必須傳回 -1。

參數

absolutePosition:int — 所搜尋之容器索引的內容所在位置。
 
preferPrevious:Boolean (default = false) — 指定當位置介於某一容器的最後一個元素與下一個容器的第一個元素之間時,所要傳回的容器索引。

傳回值
int — 容器控制器的索引,或找不到時則為 -1。

findLineAtPosition

()方法 
public function findLineAtPosition(absolutePosition:int, preferPrevious:Boolean = false):flashx.textLayout.compose:TextFlowLine

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

傳回包含指定位置之內容的 TextFlowLine 物件。

您可以將位置想成是文字流排兩個字元或其他元素之間的標度。如果 absolutePosition 的值是介於某一行的最後一個元素與下一行的第一個元素之間,則如果 preferPrevious 參數設定為 true,會傳回前一行,如果 preferPrevious 參數設定為 false,則會傳回後一行。

參數

absolutePosition:int — 您要取得其 TextFlowLine 物件的內容位置。
 
preferPrevious:Boolean (default = false) — 指定當位置介於某行的最後一個元素與下一行的第一個元素之間時,要傳回的文字行。

傳回值
flashx.textLayout.compose:TextFlowLine — 包含指定位置之內容的 TextFlowLine,如果找不到則為 null。

findLineIndexAtPosition

()方法 
public function findLineIndexAtPosition(absolutePosition:int, preferPrevious:Boolean = false):int

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

傳回包含指定位置之內容的 TextFlowLine 物件連續行編號。

第一行的編號為 0,而最後一行的編號等於總行數減 1。如果在 absolutePosition 中指定的位置超過文字流排的結尾,此方法必須傳回一個編號,以指定給新增至文字流排的下一個新行 (該編號等於目前的行數)。

您可以將位置想成是文字流排兩個字元或其他元素之間的標度。如果 absolutePosition 的值是介於某一容器的最後一行與下一個容器的第一行之間的位置,則如果 preferPrevious 參數設定為 true,就會傳回前一個容器,如果 preferPrevious 參數設定為 false,則會傳回後一個容器。

參數

absolutePosition:int — 您要取得其文字行之內容位置。
 
preferPrevious:Boolean (default = false) — 指定當位置介於某容器的最後一行與下一個容器的第一行之間時,要傳回的容器索引。

傳回值
int — 指定位置之文字行的索引。如果找不到,將其視為超過結尾並傳回行數。

getControllerAt

()方法 
public function getControllerAt(index:int):ContainerController

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

傳回位於指定索引的 ContainerController 物件。

參數

index:int — 要傳回之 ContainerController 物件的索引。

傳回值
ContainerController — 位於指定位置的 ContainerController 物件。

getControllerIndex

()方法 
public function getControllerIndex(controller:ContainerController):int

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

傳回指定之 ContainerController 物件的索引。

參數

controller:ContainerController — 要尋找之 ContainerController 物件的參照。

傳回值
int — 指定之 ContainerController 物件的索引,或是如果控制器未附加至此流排撰寫器則為 -1。

getLineAt

()方法 
public function getLineAt(index:int):flashx.textLayout.compose:TextFlowLine

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

傳回具有指定行編號的那一行。

行清單的編號是從 0 開始到總行數減 1。如果 index 中的值不在行清單範圍中,則此函數會傳回 null

參數

index:int — 要傳回之 TextFlowLine 物件的行編號。

傳回值
flashx.textLayout.compose:TextFlowLine — 具有指定行編號的 TextFlowLine,如果找不到則為 null

interactionManagerChanged

()方法 
public function interactionManagerChanged(newInteractionManager:ISelectionManager):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

一旦互動管理員有所變更時,就由 TextFlow 呼叫。

IFlowComposer 的實作應該會更新事件偵聽程式以及參照互動管理員的屬性。

參數

newInteractionManager:ISelectionManager — 新的 ISelectionManager 實體。

isDamaged

()方法 
public function isDamaged(absolutePosition:int):Boolean

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

指示流排開頭與包含位於指定位置之內容的該行之間,是否有任何 TextFlowLine 物件標示為已損毀。

參數

absolutePosition:int — 目標區域中的最後一個位置

傳回值
Boolean — 從流排開頭到包含位於 absolutePosition 之內容的該行為止,如有任何 TextFlowLine 標示為已損毀則為 true。

removeAllControllers

()方法 
public function removeAllControllers():void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

從這個 IFlowComposer 實體移除所有控制器。

removeController

()方法 
public function removeController(controller:ContainerController):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

從這個 IFlowComposer 實體移除控制器。

參數

controller:ContainerController — 要移除的 ContainerController 實體。

removeControllerAt

()方法 
public function removeControllerAt(index:int):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

從這個 IFlowComposer 實體移除位於指定索引的控制器。

參數

index:int — 要移除之 ContainerController 物件的索引。

setFocus

()方法 
public function setFocus(absolutePosition:int, preferPrevious:Boolean = false):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

將焦點設為包含 absolutePosition 參數所指定位置的容器。

定義焦點所代表的設定是實作的目的。例如,某個實作可能會使用 Stage 物件內建的 focus 屬性 (當容器為 InteractiveObjects 時),或實作可以其他方式來管理焦點。

參數

absolutePosition:int — 在容器的文字流排中指定接收焦點的位置。
 
preferPrevious:Boolean (default = false) — 若為 true,而且位置在容器的第一個字元之前,則將焦點設為上一個容器的結尾。

相關 API 元素

setRootElement

()方法 
public function setRootElement(newRootElement:ContainerFormattedElement):void

參數

newRootElement:ContainerFormattedElement

updateAllControllers

()方法 
public function updateAllControllers():Boolean

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

撰寫根元素的內容並更新顯示。

文字版面通常會分兩個階段進行:撰寫與顯示。於撰寫階段中,流排撰寫器會計算需要多少行才能顯示內容,以及這些行在流排顯示容器中的位置。於顯示階段中,流排撰寫器會更新其容器的顯示物件子系。updateAllControllers() 方法預期會執行這兩個階段。有效的實作會記錄內容變更,以在必要時才執行完整的撰寫和顯示循環。

此方法會立即並同步更新所有文字行和顯示清單。

如果任一容器的內容已經變更,此方法必須傳回 true

傳回值
Boolean — 如果有任何變更則為 true。

updateLengths

()方法 
public function updateLengths(startPosition:int, deltaLength:int):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

更新行長度以維持與 TextFlow 的對應。

參數

startPosition:int — 長度變更的開始
 
deltaLength:int — 字元數目的變更。

updateToController

()方法 
public function updateToController(index:int):Boolean

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5

撰寫並更新顯示的範圍到指定索引中的容器為止 (含此容器)。

updateToController() 方法預期會應撰寫內容並更新顯示,讓所有包含到指定索引中的容器為止 (含此容器)都是最新狀態。例如,如果您有一連串的 20 個容器,然後指定索引為 10,updateToController() 可確保第 1 個到第 10 個 (索引 9 到 9) 容器都將予以撰寫和顯示。撰寫可於該點停止。如果 controllerIndex 為 -1 (或未指定),則應更新所有容器。

此方法會立即並同步更新所有文字行和顯示清單。

如果任一容器的內容已經變更,此方法必須傳回 true

參數

index:int (default = NaN) — 最後一個要更新之容器的索引,預設會更新所有容器。

傳回值
Boolean — 如果有任何變更則為 true。




[ X ]為什麼顯示英文?
「ActionScript 3.0 參考」的內容是以英文顯示

並非所有「ActionScript 3.0 參考」的內容都翻譯為所有語言。當語言元素未翻譯時,就會以英文顯示。例如,ga.controls.HelpBox 類別並沒有翻譯為任何語言。因此在參考的繁體中文版本中,ga.controls.HelpBox 類別就會以英文顯示。