Paket | flashx.textLayout.events |
Sınıf | public class CompositionCompleteEvent |
Miras Alma | CompositionCompleteEvent Event Object |
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10, AIR 1.5 |
Bu olayı gönderen üç ana yöntem compose()
, updateToController()
, ve updateAllControllers()
yöntemleridir. Bu yöntemlerin üçü de StandardFlowComposer sınıfındadır.
Not: Olay updateAllControllers()
yöntemi tarafından gönderilirse, olay işleyici işlevinizde updateAllControllers()
öğesini yeniden çağırmayın. Böyle bir çağrı, updateAllControllers()
yöntemi hem kompozisyonu hem de görüntüleme adımlarını yürüttüğü için yinelenen bir çağrı olur. updateAllControllers()
öğesi, bu olayı kompozisyon tamamlandıktan sonra ancak görüntüleme adımı yürütülmeden önce gönderir. Aynı mantık updateToController()
yöntemine de uyar.
İlgili API Öğeleri
Özellik | Tanımlayan: | ||
---|---|---|---|
bubbles : Boolean [salt okunur]
Bir olayın köpüren bir olay olup olmadığını belirtir. | Event | ||
cancelable : Boolean [salt okunur]
Olayla ilişkilendirilmiş davranışın önlenebilir olup olmadığını gösterir. | Event | ||
compositionLength : int
Oluşturulan karakterlerin sayısı. | CompositionCompleteEvent | ||
compositionStart : int
Metin akışında dizin olarak ifade edilen, kompozisyonun etkilediği metin aralığının başlangıç konumu. | CompositionCompleteEvent | ||
constructor : Object
Belirli bir nesne örneği için sınıf nesnesine veya yapıcı işlevine bir başvuru. | Object | ||
currentTarget : Object [salt okunur]
Bu Event nesnesini olay dinleyicisiyle etkin olarak işleyen nesne. | Event | ||
eventPhase : uint [salt okunur]
Olay akışındaki geçerli aşama. | Event | ||
target : Object [salt okunur]
Olay hedefi. | Event | ||
textFlow : flashx.textLayout.elements:TextFlow
Kompozisyonun tamamlandığı TextFlow. | CompositionCompleteEvent | ||
type : String [salt okunur]
Olay türü. | Event |
Yöntem | Tanımlayan: | ||
---|---|---|---|
CompositionCompleteEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, textFlow:flashx.textLayout.elements:TextFlow = null, compositionStart:int = 0, compositionLength:int = 0) Yapıcı
| CompositionCompleteEvent | ||
Event alt sınıfının bir örneğini çoğaltır. | Event | ||
Özel ActionScript 3.0 Event sınıfınızdaki toString() yöntemini uygulamak için bir yardımcı işlev. | Event | ||
Bir nesnenin belirli bir özelliğinin tanımlı olup olmadığını gösterir. | Object | ||
Olayda preventDefault() öğesinin çağrılmış olup olmadığını kontrol eder. | Event | ||
Object sınıfının bir örneğinin parametre olarak belirtilen nesnenin prototip zincirinde olup olmadığını gösterir. | Object | ||
Bir olayın varsayılan davranışını, bu yapılabiliyorsa iptal eder. | Event | ||
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir. | Object | ||
Dinamik bir özelliğin döngü işlemlerinde kullanılabilirliğini ayarlar. | Object | ||
Olay akışında geçerli düğümdeki ve ondan sonra gelen düğümlerdeki olay dinleyicilerin işlenmesini engeller. | Event | ||
Olay akışında geçerli düğümden sonra gelen düğümlerdeki olay dinleyicilerin işlenmesini engeller. | Event | ||
Bu nesnenin, yerel ayara özel kurallara göre biçimlendirilmiş dize temsilini döndürür. | Object | ||
Event nesnesinin tüm özelliklerini içeren bir dize döndürülür. | Event | ||
Belirtilen nesnenin temel değerini döndürür. | Object |
Sabit | Tanımlayan: | ||
---|---|---|---|
COMPOSITION_COMPLETE : String = "compositionComplete" [statik]
Bir compositionComplete olay nesnesinin type özelliğinin değerini tanımlar
| CompositionCompleteEvent |
compositionLength | özellik |
compositionStart | özellik |
compositionStart:int
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10, AIR 1.5 |
Metin akışında dizin olarak ifade edilen, kompozisyonun etkilediği metin aralığının başlangıç konumu.
Uygulama
public function get compositionStart():int
public function set compositionStart(value:int):void
textFlow | özellik |
textFlow:flashx.textLayout.elements:TextFlow
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10, AIR 1.5 |
Kompozisyonun tamamlandığı TextFlow.
Uygulama
public function get textFlow():flashx.textLayout.elements:TextFlow
public function set textFlow(value:flashx.textLayout.elements:TextFlow):void
CompositionCompleteEvent | () | Yapıcı |
public function CompositionCompleteEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, textFlow:flashx.textLayout.elements:TextFlow = null, compositionStart:int = 0, compositionLength:int = 0)
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10, AIR 1.5 |
Yapıcı
Parametrelertype:String — olay türü - COMPOSITION_COMPLETE statik özelliğini kullanır.
| |
bubbles:Boolean (default = false ) — Bir olayın köpüren bir olay olup olmadığını belirtir. Bu olay köpürmez.
| |
cancelable:Boolean (default = false ) — Olayla ilişkilendirilmiş davranışın önlenebilir olup olmadığını gösterir. Bu olay iptal edilemez.
| |
textFlow:flashx.textLayout.elements:TextFlow (default = null ) — Oluşturulan TextFlow
| |
compositionStart:int (default = 0 ) — metin akışında dizin açısından, kompozisyonun başlangıcı.
| |
compositionLength:int (default = 0 ) — oluşturulan karakterlerin uzunluk sayısı
|
COMPOSITION_COMPLETE | Sabit |
public static const COMPOSITION_COMPLETE:String = "compositionComplete"
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10, AIR 1.5 |
Bir compositionComplete
olay nesnesinin type
özelliğinin değerini tanımlar
Bu örnek bir TextFlow öğesindeki belirli bir kelimeyi vurgulamak için CompositionCompleteEvent sınıfının nasıl kullanılacağını gösterir. Bu teknik metin oluşturulmadan önce TextLayoutFormat.backgroundColor
özelliğine alternatif bir ayarı temsil eder.
compositionCompleteHandler()
yöntemi, updateAllControllers()
yöntemi metni oluşturarak çalıştırmayı başlattıktan sonra ancak updateAllControllers()
görüntüleme listesini güncelleyerek çalıştırmayı bitirmeden önce çalışır. Bu işlem, olay işleyicisi yönteminin, updateAllControllers()
öğesinin görüntüleme listesini güncellemesinden önce "shall" kelimesinin vurgusunu çizmesine olanak verir.
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); } } }
Tue Jun 12 2018, 01:09 PM Z