Guida di riferimento di ActionScript® 3.0 per la piattaforma Adobe® Flash®
Home  |  Nascondi elenco pacchetti e classi |  Pacchetti  |  Classi  |  Novità  |  Indice  |  Appendici  |  Perché in inglese?
Filtri: Recupero dati dal server...
Recupero dati dal server...
flashx.textLayout.events 

CompositionCompleteEvent  - AS3

Pacchettoflashx.textLayout.events
Classepublic class CompositionCompleteEvent
EreditarietàCompositionCompleteEvent Inheritance Event Inheritance Object

Versione linguaggio: ActionScript 3.0
Versioni runtime: Flash Player 10, AIR 1.5

Un'istanza TextFlow invia questo evento dopo il completamento di un'operazione di composizione. Ogni contenitore di testo dispone di due stati: composizione e visualizzazione. Questo evento genera una notifica al completamento della fase di composizione. In questo modo potrete apportare le modifiche eventualmente necessarie e appropriate al contenitore, prima di visualizzare il testo. Potete ad esempio utilizzare questo evento per evidenziare alcune parole o caratteri nel flusso di testo, prima di visualizzare il testo.

I tre metodi principali che inviano questo evento sono compose(), updateToController() e updateAllControllers(). Questi tre metodi fanno tutti parte della classe StandardFlowComposer.

Nota: se l'evento viene inviato dal metodo updateAllControllers(), evitate di chiamare di nuovo updateAllControllers() nella funzione del gestore di eventi. Tale chiamata sarebbe ricorsiva perché il metodo updateAllControllers() esegue sia il passaggio di composizione che quello di visualizzazione. Il metodo updateAllControllers() invia questo evento dopo il completamento della composizione, ma prima che venga eseguito il passaggio di visualizzazione. Lo stesso concetto si applica al metodo updateToController().

Vedere gli esempi

Elementi API correlati



Proprietà pubbliche
 ProprietàDefinito da
 Inheritedbubbles : Boolean
[sola lettura] Indica se un evento è un evento di bubbling.
Event
 Inheritedcancelable : Boolean
[sola lettura] Indica se il comportamento associato all'evento può essere impedito.
Event
  compositionLength : int
Il numero di caratteri composti.
CompositionCompleteEvent
  compositionStart : int
La posizione iniziale dell'intervallo di testo interessato dalla composizione, espresso sotto forma di indice nel flusso di testo.
CompositionCompleteEvent
 Inheritedconstructor : Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto.
Object
 InheritedcurrentTarget : Object
[sola lettura] L'oggetto che elabora attivamente l'oggetto Event con un listener di eventi.
Event
 InheritedeventPhase : uint
[sola lettura] La fase attuale del flusso di eventi.
Event
 Inheritedtarget : Object
[sola lettura] Il target dell'evento.
Event
  textFlow : flashx.textLayout.elements:TextFlow
L'oggetto TextFlow sul quale è stata completata la composizione.
CompositionCompleteEvent
 Inheritedtype : String
[sola lettura] Il tipo di evento.
Event
Metodi pubblici
 MetodoDefinito da
  
CompositionCompleteEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, textFlow:flashx.textLayout.elements:TextFlow = null, compositionStart:int = 0, compositionLength:int = 0)
Funzione di costruzione
CompositionCompleteEvent
 Inherited
Duplica un'istanza di una sottoclasse Event.
Event
 Inherited
formatToString(className:String, ... arguments):String
Una funzione dell'utilità per l'implementazione del metodo toString() in classi Event ActionScript 3.0 personalizzate.
Event
 Inherited
Indica se per un oggetto è definita una proprietà specifica.
Object
 Inherited
Verifica se sull'evento è stato chiamato il metodo preventDefault().
Event
 Inherited
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro.
Object
 Inherited
Annulla il comportamento predefinito di un evento se tale comportamento può essere annullato.
Event
 Inherited
Indica se la proprietà specificata esiste ed è enumerabile.
Object
 Inherited
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche.
Object
 Inherited
Impedisce l'elaborazione di tutti i listener di eventi nel nodo corrente e in tutti i nodi successivi del flusso di eventi.
Event
 Inherited
Impedisce l'elaborazione di tutti i listener di eventi nei nodi del flusso di eventi successivi a quello corrente.
Event
 Inherited
Restituisce la rappresentazione in formato stringa di questo oggetto, formattato in base alle convenzioni specifiche per le versioni localizzate.
Object
 Inherited
Restituisce una stringa che contiene tutte le proprietà dell'oggetto Event.
Event
 Inherited
Restituisce il valore di base dell'oggetto specificato.
Object
Costanti pubbliche
 CostanteDefinito da
  COMPOSITION_COMPLETE : String = "compositionComplete"
[statico] Definisce il valore della proprietà type di un oggetto evento compositionComplete.
CompositionCompleteEvent
Descrizione delle proprietà

compositionLength

proprietà
compositionLength:int

Versione linguaggio: ActionScript 3.0
Versioni runtime: Flash Player 10, AIR 1.5

Il numero di caratteri composti.



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

compositionStart

proprietà 
compositionStart:int

Versione linguaggio: ActionScript 3.0
Versioni runtime: Flash Player 10, AIR 1.5

La posizione iniziale dell'intervallo di testo interessato dalla composizione, espresso sotto forma di indice nel flusso di testo.



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

textFlow

proprietà 
textFlow:flashx.textLayout.elements:TextFlow

Versione linguaggio: ActionScript 3.0
Versioni runtime: Flash Player 10, AIR 1.5

L'oggetto TextFlow sul quale è stata completata la composizione.



Implementazione
    public function get textFlow():flashx.textLayout.elements:TextFlow
    public function set textFlow(value:flashx.textLayout.elements:TextFlow):void
Descrizione della funzione di costruzione

CompositionCompleteEvent

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

Versione linguaggio: ActionScript 3.0
Versioni runtime: Flash Player 10, AIR 1.5

Funzione di costruzione

Parametri
type:String — tipo di evento - utilizzate la proprietà statica COMPOSITION_COMPLETE.
 
bubbles:Boolean (default = false) — Indica se un evento è un evento di bubbling. Questo evento non si propaga.
 
cancelable:Boolean (default = false) — Indica se il comportamento associato all'evento può essere impedito. Questo evento non può essere annullato.
 
textFlow:flashx.textLayout.elements:TextFlow (default = null) — L'oggetto TextFlow ottenuto dalla composizione.
 
compositionStart:int (default = 0) — avvio della composizione, in termini di un indice all'interno del flusso di testo.
 
compositionLength:int (default = 0) — numero di caratteri di lunghezza composti
Descrizione delle costanti

COMPOSITION_COMPLETE

Costante
public static const COMPOSITION_COMPLETE:String = "compositionComplete"

Versione linguaggio: ActionScript 3.0
Versioni runtime: Flash Player 10, AIR 1.5

Definisce il valore della proprietà type di un oggetto evento compositionComplete

CompositionCompleteEvent_example.as

In questo esempio viene illustrato come utilizzare la classe CompositionCompleteEvent per evidenziare una parola specifica in un TextFlow. Questa tecnica costituisce un'alternativa all'impostazione della proprietà TextLayoutFormat.backgroundColor prima della composizione del testo.

Il metodo compositionCompleteHandler() viene eseguito dopo che viene avviata l'esecuzione del metodo updateAllControllers() con la composizione del testo, ma prima che sia completata l'esecuzione di updateAllControllers() con l'aggiornamento dell'elenco di visualizzazione. In questo modo il metodo del gestore di eventi può disegnare l'evidenziazione della parola "shall" prima che updateAllControllers() aggiorni l'elenco di visualizzazione.

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 ]Perché in inglese?
Il contenuto della Guida di riferimento di ActionScript 3.0 appare in inglese

Non tutte le parti della Guida di riferimento di ActionScript 3.0 sono tradotte in tutte le lingue. Quando un elemento del linguaggio non è tradotto, viene riportato in inglese. Ad esempio, la classe ga.controls.HelpBox non è tradotta in nessuna lingua. Pertanto, nella versione italiana della guida di riferimento, la descrizione della classe ga.controls.HelpBox è riportata in inglese.