Package | flashx.textLayout.events |
Class | public class CompositionCompleteEvent |
Inheritance | CompositionCompleteEvent Event Object |
Language Version: | ActionScript 3.0 |
Runtime Versions: | Flash Player 10, AIR 1.5 |
The three main methods that dispatch this event are compose()
,
updateToController()
, and updateAllControllers()
.
All three of these methods are in the StandardFlowComposer class.
Note: If the event is dispatched by the
updateAllControllers()
method, do not call
updateAllControllers()
again in your event handler function.
Such a call would be a recursive call because the updateAllControllers()
method executes both the composition and display steps. The updateAllControllers()
dispatches this event after composition completes, but before the display step executes.
The same reasoning applies to the updateToController()
method.
Related API Elements
Property | Defined By | ||
---|---|---|---|
bubbles : Boolean [read-only]
Indicates whether an event is a bubbling event. | Event | ||
cancelable : Boolean [read-only]
Indicates whether the behavior associated with the event can be prevented. | Event | ||
compositionLength : int
The number of characters composed. | CompositionCompleteEvent | ||
compositionStart : int
The start location of the text range affected by the composition, expressed as an index into the text flow. | CompositionCompleteEvent | ||
constructor : Object
A reference to the class object or constructor function for a given object instance. | Object | ||
currentTarget : Object [read-only]
The object that is actively processing the Event object with an event listener. | Event | ||
eventPhase : uint [read-only]
The current phase in the event flow. | Event | ||
prototype : Object [static]
A reference to the prototype object of a class or function object. | Object | ||
target : Object [read-only]
The event target. | Event | ||
textFlow : flashx.textLayout.elements:TextFlow
TextFlow on which composition has been completed. | CompositionCompleteEvent | ||
type : String [read-only]
The type of event. | Event |
Method | Defined By | ||
---|---|---|---|
CompositionCompleteEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, textFlow:flashx.textLayout.elements:TextFlow = null, compositionStart:int = 0, compositionLength:int = 0) Constructor
| CompositionCompleteEvent | ||
Duplicates an instance of an Event subclass. | Event | ||
A utility function for implementing the toString() method in custom
ActionScript 3.0 Event classes. | Event | ||
Indicates whether an object has a specified property defined. | Object | ||
Checks whether the preventDefault() method has been called on the event. | Event | ||
Indicates whether an instance of the Object class is in the prototype chain of the object specified
as the parameter. | Object | ||
Cancels an event's default behavior if that behavior can be canceled. | Event | ||
Indicates whether the specified property exists and is enumerable. | Object | ||
Sets the availability of a dynamic property for loop operations. | Object | ||
Prevents processing of any event listeners in the current node and any subsequent nodes in
the event flow. | Event | ||
Prevents processing of any event listeners in nodes subsequent to the current node in the
event flow. | Event | ||
Returns the string representation of this object, formatted according to locale-specific conventions. | Object | ||
Returns a string containing all the properties of the Event object. | Event | ||
Returns the primitive value of the specified object. | Object |
Constant | Defined By | ||
---|---|---|---|
ACTIVATE : String = "activate" [static]
The ACTIVATE constant defines the value of the type property of an activate event object. | Event | ||
ADDED : String = "added" [static]
The Event.ADDED constant defines the value of the type property of
an added event object. | Event | ||
ADDED_TO_STAGE : String = "addedToStage" [static]
The Event.ADDED_TO_STAGE constant defines the value of the type
property of an addedToStage event object. | Event | ||
CANCEL : String = "cancel" [static]
The Event.CANCEL constant defines the value of the type property of a cancel event object. | Event | ||
CHANGE : String = "change" [static]
The Event.CHANGE constant defines the value of the type property of a change event object. | Event | ||
CLEAR : String = "clear" [static]
The Event.CLEAR constant defines the value of the type property
of a clear event object. | Event | ||
CLOSE : String = "close" [static]
The Event.CLOSE constant defines the value of the type property of a close event object. | Event | ||
CLOSING : String = "closing" [static]
The Event.CLOSING constant defines the value of the
type property of a closing event object. | Event | ||
COMPLETE : String = "complete" [static]
The Event.COMPLETE constant defines the value of the type property of a complete event object. | Event | ||
COMPOSITION_COMPLETE : String = "compositionComplete" [static]
Defines the value of the type property of a compositionComplete event object
| CompositionCompleteEvent | ||
CONNECT : String = "connect" [static]
The Event.CONNECT constant defines the value of the type property of a connect event object. | Event | ||
CONTEXT3D_CREATE : String = "context3DCreate" [static]
The Event.CONTEXT3D_CREATE constant defines the value of the type
property of a context3Dcreate event object. | Event | ||
COPY : String = "copy" [static]
Defines the value of the type property of a copy event object. | Event | ||
CUT : String = "cut" [static]
Defines the value of the type property of a cut event object. | Event | ||
DEACTIVATE : String = "deactivate" [static]
The Event.DEACTIVATE constant defines the value of the type property of a deactivate event object. | Event | ||
DISPLAYING : String = "displaying" [static]
The Event.DISPLAYING constant defines the value of the type property of a displaying event object. | Event | ||
ENTER_FRAME : String = "enterFrame" [static]
The Event.ENTER_FRAME constant defines the value of the type property of an enterFrame event object. | Event | ||
EXIT_FRAME : String = "exitFrame" [static]
The Event.EXIT_FRAME constant defines the value of the type property of an exitFrame event object. | Event | ||
EXITING : String = "exiting" [static]
The Event.EXITING constant defines the value of the type property of an exiting event object. | Event | ||
FRAME_CONSTRUCTED : String = "frameConstructed" [static]
The Event.FRAME_CONSTRUCTED constant defines the value of the type property of an frameConstructed event object. | Event | ||
FULLSCREEN : String = "fullScreen" [static]
The Event.FULL_SCREEN constant defines the value of the type property of a fullScreen event object. | Event | ||
HTML_BOUNDS_CHANGE : String = "htmlBoundsChange" [static]
The Event.HTML_BOUNDS_CHANGE constant defines the value of the type property of an htmlBoundsChange event object. | Event | ||
HTML_DOM_INITIALIZE : String = "htmlDOMInitialize" [static]
The Event.HTML_DOM_INITIALIZE constant defines the value of the type property
of an htmlDOMInitialize event object. | Event | ||
HTML_RENDER : String = "htmlRender" [static]
The Event.HTML_RENDER constant defines the value of the type property of an htmlRender event object. | Event | ||
ID3 : String = "id3" [static]
The Event.ID3 constant defines the value of the type property of an id3 event object. | Event | ||
INIT : String = "init" [static]
The Event.INIT constant defines the value of the type property of an init event object. | Event | ||
LOCATION_CHANGE : String = "locationChange" [static]
The Event.LOCATION_CHANGE constant defines the value of the type property of a locationChange event object. | Event | ||
MOUSE_LEAVE : String = "mouseLeave" [static]
The Event.MOUSE_LEAVE constant defines the value of the type property of a mouseLeave event object. | Event | ||
NETWORK_CHANGE : String = "networkChange" [static]
The Event.NETWORK_CHANGE constant defines the value of the type property of a networkChange event object. | Event | ||
OPEN : String = "open" [static]
The Event.OPEN constant defines the value of the type property of an open event object. | Event | ||
PASTE : String = "paste" [static]
The Event.PASTE constant defines the value of the type property of a paste event object. | Event | ||
PREPARING : String = "preparing" [static]
The Event.PREPARING constant defines the value of the type property of a preparing event object. | Event | ||
REMOVED : String = "removed" [static]
The Event.REMOVED constant defines the value of the type property of
a removed event object. | Event | ||
REMOVED_FROM_STAGE : String = "removedFromStage" [static]
The Event.REMOVED_FROM_STAGE constant defines the value of the type
property of a removedFromStage event object. | Event | ||
RENDER : String = "render" [static]
The Event.RENDER constant defines the value of the type property of a render event object. | Event | ||
RESIZE : String = "resize" [static]
The Event.RESIZE constant defines the value of the type property of a resize event object. | Event | ||
SCROLL : String = "scroll" [static]
The Event.SCROLL constant defines the value of the type property of a scroll event object. | Event | ||
SELECT : String = "select" [static]
The Event.SELECT constant defines the value of the type property of a select event object. | Event | ||
SELECT_ALL : String = "selectAll" [static]
The Event.SELECT_ALL constant defines the value of the type property of a selectAll event object. | Event | ||
SOUND_COMPLETE : String = "soundComplete" [static]
The Event.SOUND_COMPLETE constant defines the value of the type property of a soundComplete event object. | Event | ||
STANDARD_ERROR_CLOSE : String = "standardErrorClose" [static]
The Event.STANDARD_ERROR_CLOSE constant defines the value of the type property of a standardErrorClose event object. | Event | ||
STANDARD_INPUT_CLOSE : String = "standardInputClose" [static]
The Event.STANDARD_INPUT_CLOSE constant defines the value of the type property of a standardInputClose event object. | Event | ||
STANDARD_OUTPUT_CLOSE : String = "standardOutputClose" [static]
The Event.STANDARD_OUTPUT_CLOSE constant defines the value of the type property of a standardOutputClose event object. | Event | ||
TAB_CHILDREN_CHANGE : String = "tabChildrenChange" [static]
The Event.TAB_CHILDREN_CHANGE constant defines the value of the type property of a tabChildrenChange event object. | Event | ||
TAB_ENABLED_CHANGE : String = "tabEnabledChange" [static]
The Event.TAB_ENABLED_CHANGE constant defines the value of the type
property of a tabEnabledChange event object. | Event | ||
TAB_INDEX_CHANGE : String = "tabIndexChange" [static]
The Event.TAB_INDEX_CHANGE constant defines the value of the
type property of a tabIndexChange event object. | Event | ||
TEXT_INTERACTION_MODE_CHANGE : String = "textInteractionModeChange" [static]
The Event.TEXT_INTERACTION_MODE_CHANGE constant defines the value of the type property of an interaction mode event object. | Event | ||
UNLOAD : String = "unload" [static]
The Event.UNLOAD constant defines the value of the type property of an unload event object. | Event | ||
USER_IDLE : String = "userIdle" [static]
The Event.USER_IDLE constant defines the value of the type property of a userIdle event object. | Event | ||
USER_PRESENT : String = "userPresent" [static]
The Event.USER_PRESENT constant defines the value of the type property of a userPresent event object. | Event |
compositionLength | property |
compositionStart | property |
compositionStart:int
Language Version: | ActionScript 3.0 |
Runtime Versions: | Flash Player 10, AIR 1.5 |
The start location of the text range affected by the composition, expressed as an index into the text flow.
Implementation
public function get compositionStart():int
public function set compositionStart(value:int):void
textFlow | property |
textFlow:flashx.textLayout.elements:TextFlow
Language Version: | ActionScript 3.0 |
Runtime Versions: | Flash Player 10, AIR 1.5 |
TextFlow on which composition has been completed.
Implementation
public function get textFlow():flashx.textLayout.elements:TextFlow
public function set textFlow(value:flashx.textLayout.elements:TextFlow):void
CompositionCompleteEvent | () | Constructor |
public function CompositionCompleteEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, textFlow:flashx.textLayout.elements:TextFlow = null, compositionStart:int = 0, compositionLength:int = 0)
Language Version: | ActionScript 3.0 |
Runtime Versions: | Flash Player 10, AIR 1.5 |
Constructor
Parameterstype:String — event type - use the static property COMPOSITION_COMPLETE.
| |
bubbles:Boolean (default = false ) — Indicates whether an event is a bubbling event. This event does not bubble.
| |
cancelable:Boolean (default = false ) — Indicates whether the behavior associated with the event can be prevented.
This event cannot be cancelled.
| |
textFlow:flashx.textLayout.elements:TextFlow (default = null ) — The TextFlow which was composed
| |
compositionStart:int (default = 0 ) — start of composition, in terms of an index into the text flow.
| |
compositionLength:int (default = 0 ) — length number of characters composed
|
COMPOSITION_COMPLETE | Constant |
public static const COMPOSITION_COMPLETE:String = "compositionComplete"
Language Version: | ActionScript 3.0 |
Runtime Versions: | Flash Player 10, AIR 1.5 |
Defines the value of the type
property of a compositionComplete
event object
This example shows how to use the CompositionCompleteEvent class to
highlight a specific word in a TextFlow. This technique represents an alternative
to setting the TextLayoutFormat.backgroundColor
property before
the text is composed.
The compositionCompleteHandler()
method executes after the
updateAllControllers()
method initiates execution by composing
the text, but before updateAllControllers()
completes execution by
updating the display list. This allows the event handler method to draw the
highlighting of the word "shall" before the updateAllControllers()
updates the display list.
package flashx.textLayout.events.examples { import flash.display.Graphics; import flash.display.Sprite; import flash.geom.Rectangle; import flash.text.engine.TextLine; import flashx.textLayout.compose.StandardFlowComposer; import flashx.textLayout.compose.TextFlowLine; import flashx.textLayout.container.ContainerController; import flashx.textLayout.conversion.TextConverter; import flashx.textLayout.elements.FlowLeafElement; import flashx.textLayout.elements.ParagraphElement; import flashx.textLayout.elements.TextFlow; import flashx.textLayout.events.CompositionCompleteEvent; public class CompositionCompleteEvent_example extends Sprite { private var wordToHighlight:String = "shall"; private var poemContainer:Sprite; private var txtFlow:TextFlow; private var controller:ContainerController; private const poem:String = "Sonnet 18\n" + "Shall I compare thee to a summer's day?\n" + "Thou art more lovely and more temperate:\n" + "Rough winds do shake the darling buds of May,\n" + "And summer's lease hath all too short a date:\n" + "Sometime too hot the eye of heaven shines,\n" + "And often is his gold complexion dimmed,\n" + "And every fair from fair sometime declines,\n" + "By chance, or nature's changing course untrimmed:\n" + "But thy eternal summer shall not fade,\n" + "Nor lose possession of that fair thou ow'st,\n" + "Nor shall death brag thou wand'rest in his shade,\n" + "When in eternal lines to time thou grow'st,\n" + "So long as men can breathe or eyes can see,\n" + "So long lives this, and this gives life to thee.\n" + "William Shakespeare\n"; public function CompositionCompleteEvent_example() { poemContainer = new Sprite(); txtFlow = new TextFlow(); poemContainer.x = 30; poemContainer.y = 30; this.stage.addChild( poemContainer ); controller = new ContainerController(poemContainer, 300, 230); controller.verticalScrollPolicy = flashx.textLayout.container.ScrollPolicy.OFF; txtFlow = TextConverter.importToFlow( poem, TextConverter.PLAIN_TEXT_FORMAT ); txtFlow.flowComposer = new StandardFlowComposer(); txtFlow.addEventListener(CompositionCompleteEvent.COMPOSITION_COMPLETE, compositionCompleteHandler); txtFlow.flowComposer.addController( controller ); txtFlow.flowComposer.updateAllControllers(); } private function compositionCompleteHandler(event:CompositionCompleteEvent):void { if (event.textFlow == txtFlow) { checkForMatchingWord(); } } private function checkForMatchingWord():void { var currentLeaf:FlowLeafElement = txtFlow.getFirstLeaf(); var currentParagraph:ParagraphElement = currentLeaf ? currentLeaf.getParagraph() : null; while (currentParagraph) { // iterate over all paragraphs in the text flow var paraStart:uint = currentParagraph.getAbsoluteStart(); var currWordBoundary:int = 0; var nextWordBoundary:int = 0; var pattern:RegExp = new RegExp(wordToHighlight, "i"); while (true) { // iterate over letters in a word nextWordBoundary = currentParagraph.findNextWordBoundary(currWordBoundary); if (nextWordBoundary == currWordBoundary) { break; // end of paragraph; break of inner while loop } var word:String = ''; var indexInLeaf:int = currWordBoundary + paraStart - currentLeaf.getAbsoluteStart(); var wordLen:uint = nextWordBoundary - currWordBoundary; while (true){ // traverse consecutive leaf elements looking for 'wordLen' characters // Take as many characters from the current leaf as possible to meet the quota of 'wordLen' var consumeCount:uint = indexInLeaf + wordLen <= currentLeaf.textLength ? wordLen : currentLeaf.textLength - indexInLeaf; word += currentLeaf.text.substr (indexInLeaf, consumeCount); wordLen -= consumeCount; if (!wordLen) break; // Quota not met; move to the next leaf // Also reset the index where the next leaf will be scanned currentLeaf = currentLeaf.getNextLeaf(); indexInLeaf = 0; } if (pattern.test(word)) { highlightWord(currWordBoundary, nextWordBoundary, word, paraStart); } currWordBoundary = nextWordBoundary; } // At this point, currentLeaf is the last leaf in currentParagraph. Move to the next paragraph. currentLeaf = currentLeaf.getNextLeaf(); currentParagraph = currentLeaf ? currentLeaf.getParagraph() : null; } } private function highlightWord(begin:int, end:int, word:String, paraStart:int):void { var absoluteBegin:int = paraStart + begin; var absoluteEnd:int = paraStart + end; var startTextFlowLineIndex:int = txtFlow.flowComposer.findLineIndexAtPosition(absoluteBegin); var endTextFlowLineIndex:int = txtFlow.flowComposer.findLineIndexAtPosition(absoluteEnd); var txtFlowLine:TextFlowLine = txtFlow.flowComposer.getLineAt(startTextFlowLineIndex); var txtLine:TextLine = txtFlowLine.getTextLine(); // get the bounds of the first and last Atom of the textLine var startbounds:Rectangle = txtLine.getAtomBounds(txtLine.getAtomIndexAtCharIndex(begin)); var endbounds:Rectangle = txtLine.getAtomBounds(txtLine.getAtomIndexAtCharIndex(end)); var box:Sprite = new Sprite(); var g:Graphics = box.graphics; g.lineStyle(1, 0xFFFF00, 0.5); // set line style g.beginFill(0xFFFF00, 0.3); // set fill style // draw a rectangle around the specified boundaries g.drawRect(startbounds.left, startbounds.top, (endbounds.x - startbounds.x), startbounds.height); txtLine.addChild(box); } } }
Mon Nov 28 2011, 06:48 AM -08:00