ActionScript® 3.0 Referenzhandbuch für die Adobe® Flash®-Plattform
Home  |  Liste der Pakete und Klassen ausblenden |  Pakete  |  Klassen  |  Neue Funktionen  |  Stichwortverzeichnis  |  Anhänge  |  Warum auf Englisch?
Filter: Daten werden vom Server abgerufen...
Daten werden vom Server abgerufen...
flashx.textLayout.events 

CompositionCompleteEvent  - AS3

Paketflashx.textLayout.events
Klassepublic class CompositionCompleteEvent
VererbungCompositionCompleteEvent Inheritance Event Inheritance Object

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10, AIR 1.5

Eine TextFlow-Instanz löst dieses Ereignis aus, nachdem ein compose-Vorgang abgeschlossen wurde. Jeder Textcontainer besitzt zwei Status: Zusammenstellung und Anzeige. Dieses Ereignis benachrichtigt Sie, wenn die Zusammenstellungsphase beendet ist. Dies bietet die Möglichkeit, notwendige und geeignete Änderungen am Container vorzunehmen, bevor Sie den Text anzeigen. Beispielsweise können Sie mit diesem Ereignis Markierungen von bestimmten Wörtern oder Zeichen im Textfluss hinzufügen, bevor der Text angezeigt wird.

Die drei wichtigsten Methoden, die dieses Ereignis auslösen, sind compose(), updateToController() und updateAllControllers(). Alle diese drei Methoden sind in der StandardFlowComposer-Klasse enthalten.

Hinweis: Wenn das Ereignis von der updateAllControllers()-Methode ausgelöst wird, rufen Sie die updateAllControllers()-Methode in der Ereignisprozedurfunktion nicht erneut auf. Dies wäre ein rekursiver Aufruf, da die updateAllControllers()-Methode sowohl die Zusammenstellungs- als auch die Anzeigeschritte ausführt. Durch updateAllControllers() wird dieses Ereignis ausgelöst, nachdem die Zusammenstellung abgeschlossen ist, aber bevor der Anzeigeschritt ausgeführt wird. Die gleiche Logik gilt für die updateToController()-Methode.

Beispiele anzeigen

Verwandte API-Elemente



Öffentliche Eigenschaften
 EigenschaftDefiniert von
 Inheritedbubbles : Boolean
[schreibgeschützt] Gibt an, ob es sich bei dem Ereignis um ein Bubbling-Ereignis handelt.
Event
 Inheritedcancelable : Boolean
[schreibgeschützt] Gibt an, ob das mit dem Ereignis verknüpfte Verhalten verhindert werden kann.
Event
  compositionLength : int
Die Anzahl der zusammengestellten Zeichen.
CompositionCompleteEvent
  compositionStart : int
Die Startposition des Textbereichs, der von der Zusammenstellung betroffen ist, ausgedrückt als Indexposition innerhalb des Textflusses.
CompositionCompleteEvent
 Inheritedconstructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz.
Object
 InheritedcurrentTarget : Object
[schreibgeschützt] Das Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet.
Event
 InheritedeventPhase : uint
[schreibgeschützt] Die aktuelle Phase im Ereignisablauf.
Event
 Inheritedtarget : Object
[schreibgeschützt] Das Ereignis-Ziel.
Event
  textFlow : flashx.textLayout.elements:TextFlow
TextFlow, in dem die Zusammenstellung abgeschlossen wurde.
CompositionCompleteEvent
 Inheritedtype : String
[schreibgeschützt] Der Ereignistyp.
Event
Öffentliche Methoden
 MethodeDefiniert von
  
CompositionCompleteEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, textFlow:flashx.textLayout.elements:TextFlow = null, compositionStart:int = 0, compositionLength:int = 0)
Konstruktor
CompositionCompleteEvent
 Inherited
Dupliziert eine Instanz einer Event-Unterklasse.
Event
 Inherited
formatToString(className:String, ... arguments):String
Eine Dienstprogrammfunktion zur Implementierung der toString()-Methode in benutzerdefinierten ActionScript 3.0 Event-Klassen.
Event
 Inherited
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde.
Object
 Inherited
Überprüft, ob die preventDefault()-Methode bei dem Ereignis aufgerufen wurde.
Event
 Inherited
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde.
Object
 Inherited
Bricht das Standardverhalten eines Ereignisses ab, wenn dieses Verhalten abgebrochen werden kann.
Event
 Inherited
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann.
Object
 Inherited
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest.
Object
 Inherited
Verhindert die Verarbeitung von Ereignis-Listenern im aktuellen Knoten und in Knoten, die dem aktuellen Knoten im Ereignisablauf nachfolgen.
Event
 Inherited
Verhindert die Verarbeitung von Ereignis-Listenern in Knoten, die dem aktuellen Knoten im Ereignisablauf nachfolgen.
Event
 Inherited
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas.
Object
 Inherited
Gibt eine Zeichenfolge zurück, die alle Eigenschaften des Ereignisobjekts enthält.
Event
 Inherited
Gibt den Grundwert des angegebenen Objekts zurück.
Object
Öffentliche Konstanten
 KonstanteDefiniert von
  COMPOSITION_COMPLETE : String = "compositionComplete"
[statisch] Definiert den Wert der type-Eigenschaft eines compositionComplete-Ereignisobjekts
CompositionCompleteEvent
Eigenschaftendetails

compositionLength

Eigenschaft
compositionLength:int

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10, AIR 1.5

Die Anzahl der zusammengestellten Zeichen.



Implementierung
    public function get compositionLength():int
    public function set compositionLength(value:int):void

compositionStart

Eigenschaft 
compositionStart:int

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10, AIR 1.5

Die Startposition des Textbereichs, der von der Zusammenstellung betroffen ist, ausgedrückt als Indexposition innerhalb des Textflusses.



Implementierung
    public function get compositionStart():int
    public function set compositionStart(value:int):void

textFlow

Eigenschaft 
textFlow:flashx.textLayout.elements:TextFlow

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10, AIR 1.5

TextFlow, in dem die Zusammenstellung abgeschlossen wurde.



Implementierung
    public function get textFlow():flashx.textLayout.elements:TextFlow
    public function set textFlow(value:flashx.textLayout.elements:TextFlow):void
Konstruktordetails

CompositionCompleteEvent

()Konstruktor
public function CompositionCompleteEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, textFlow:flashx.textLayout.elements:TextFlow = null, compositionStart:int = 0, compositionLength:int = 0)

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10, AIR 1.5

Konstruktor

Parameter
type:String — Ereignistyp - verwenden Sie die statische COMPOSITION_COMPLETE-Eigenschaft.
 
bubbles:Boolean (default = false) — Gibt an, ob es sich bei dem Ereignis um ein Bubbling-Ereignis handelt. Dieses Ereignis propagiert nicht.
 
cancelable:Boolean (default = false) — Gibt an, ob das mit dem Ereignis verknüpfte Verhalten verhindert werden kann. Dieses Ereignis kann nicht abgebrochen werden.
 
textFlow:flashx.textLayout.elements:TextFlow (default = null) — Der zusammengestellte TextFlow.
 
compositionStart:int (default = 0) — Begin der Zusammenstellung als Indexposition im Textfluss.
 
compositionLength:int (default = 0) — Länge - die Anzahl der zusammengesetzten Zeichen
Konstantendetails

COMPOSITION_COMPLETE

Konstante
public static const COMPOSITION_COMPLETE:String = "compositionComplete"

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10, AIR 1.5

Definiert den Wert der type-Eigenschaft eines compositionComplete-Ereignisobjekts

CompositionCompleteEvent_example.as

In diesem Beispiel wird beschrieben, wie mit der CompositionCompleteEvent-Klasse ein bestimmtes Wort in einem TextFlow markiert wird. Diese Technik stellt eine Alternative zum Festlegen der TextLayoutFormat.backgroundColor-Eigenschaft dar, bevor der Text zusammengestellt wird.

Die compositionCompleteHandler()-Methode wird ausgeführt, nachdem die updateAllControllers()-Methode die Ausführung durch Textzusammenstellung startet, aber bevor updateAllControllers() die Ausführung durch Aktualisieren der Anzeigeliste abschließt. Dadurch kann die Ereignisprozedurmethode die Hervorhebung des Worts "shall" zeichnen, bevor durch updateAllControllers() die Anzeigeliste aktualisiert wird.

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);
        }
    }
}






[ X ]Warum auf Englisch?
Inhalt des ActionScript 3.0-Referenzhandbuchs wird in englischer Sprache angezeigt

Nicht alle Teile des ActionScript 3.0-Referenzhandbuchs wurden in alle Sprachen übersetzt. Wenn der Text zu einem Sprachelement nicht übersetzt wurde, wird er auf Englisch angezeigt. Zum Beispiel wurden die Informationen zur ga.controls.HelpBox-Klasse nicht in andere Sprachen übersetzt. In der deutschen Version des Referenzhandbuchs erscheint der Abschnitt zur ga.controls.HelpBox-Klasse deshalb auf Englisch.