Package | flash.text.engine |
Classe | public final class TextLine |
Héritage | TextLine ![]() ![]() ![]() ![]() ![]() |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Il est impossible de créer un objet TextLine directement à partir du code ActionScript. Si vous appelez new TextLine()
, une exception est renvoyée. Pour créer un objet TextLine, appelez la méthode createTextLine()
d’un TextBlock.
TextLine encapsule les informations minimales nécessaires pour effectuer le rendu de son contenu et fournir l’interactivité par l’intermédiaire de méthodes décrivant les propriétés des atomes de la ligne. Le terme atome fait à la fois référence aux éléments graphiques et aux caractères (y compris aux groupes de combinaisons de caractère), entités indivisibles qui composent une ligne de texte.
Après un déclenchement normal d’événements pour une ligne de texte, si la ligne est valide, les événements sont reproduits dans les diffuseurs d’événements spécifiés par les propriétés eventMirror
des objets d’éléments de contenu ayant contribué à la ligne de texte. Ces objets sont enregistrés dans la propriété TextLine.mirrorRegions
. Les événements ne sont pas reproduits si la propagation de l’événement a échoué ou a été interrompue, ou si la ligne de texte n’est pas valide.
La mise en miroir des événements de souris est un cas à part. Etant donné que les zones miroir ne sont pas des objets d’affichage, les événements mouseOver
et mouseOut
sont simulés à leur place. Les événements rollOver
et rollOut
ne sont pas simulés. Tous les événements mouseOver
, mouseOut
, rollOver
et rollOut
qui se produisent naturellement (ciblés à la ligne de texte ou aux enfants de la ligne de texte) sont ignorés et ne sont donc pas mis en miroir.
L’origine d’un objet de ligne de texte est le début de la ligne de base. Si vous ne définissez pas la position verticale (propriété y
) d’une ligne contenant du texte latin sur une ligne de base de caractères romains, seuls les jambages du texte s’affichent sous le haut de l’objet Sprite auquel vous ajoutez la ligne de texte. Examinez le diagramme suivant :
La classe TextLine descend de plusieurs autres classes, DisplayObjectContainer, InteractiveObject, DisplayObject et EventDispatcher, dont elle hérite les propriétés et les méthodes. Les propriétés héritées suivantes ne s’appliquent pas aux objets TextLine :
-
contextMenu
-
focusRect
-
tabChildren
-
tabEnabled
-
tabIndex
Si vous tentez de définir ces propriétés, le moteur de saisie renvoie l’erreur : IllegalOperationError. Vous pouvez lire ces propriétés, mais elles contiennent toujours des valeurs par défaut.
Plus d’exemples
Eléments de l’API associés
Propriété | Défini par | ||
---|---|---|---|
![]() | accessibilityImplementation : AccessibilityImplementation
Implémentation d’accessibilité (AccessibilityImplementation) actuelle pour cette occurrence d’InteractiveObject. | InteractiveObject | |
![]() | metaData : Object
Obtient les données d’objet de métadonnées de l’occurrence DisplayObject si les données d’meta a été stockée près de la l’occurrence de cette DisplayObject dans le fichier SWF à l’aide d’une balise de4 PlaceObject. | DisplayObject |
Méthode | Défini par |
---|
Constante | Défini par |
---|
getAtomBounds()
pour encadrer chacune d’elles.
- Ajoutez le composant NumericStepper dans la bibliothèque.
- Enregistrez ce code sous le nom TextLineExample.as dans le même répertoire que votre fichier FLA.
- Dans la fenêtre Propriétés du fichier FLA, définissez Class sur TextLineExample.
package { import flash.display.Sprite; import flash.text.engine.TextBlock; import flash.text.engine.TextElement; import flash.text.engine.TextLine; import flash.text.engine.ElementFormat; import flash.text.engine.FontDescription; import flash.text.engine.FontPosture; import flash.text.engine.FontWeight; import fl.controls.NumericStepper; import flash.events.Event; import flash.geom.Rectangle; public class TextLineExample extends Sprite { private var atomStepper:NumericStepper = new NumericStepper(); private var atomDataContainer:Sprite; private var fontDescriptionItalic:FontDescription = new FontDescription("Arial", FontWeight.NORMAL, FontPosture.ITALIC); private var fontDescriptionNormal:FontDescription = new FontDescription("Arial", FontWeight.NORMAL , FontPosture.NORMAL); private var textBlock:TextBlock = new TextBlock(); private var textLine:TextLine; public function TextLineExample():void { var myText:String = "I am a TextElement, created from a String and assigned " + "to the content property of a TextBlock. From the text block, " + "the createTextLine() method created these lines, 300 pixels wide, " + "for display." ; atomStepper.minimum = 0; atomStepper.value = 0; atomStepper.width = 50; addChild(atomStepper); atomStepper.x = 20; atomStepper.y = 120; atomStepper.addEventListener(Event.CHANGE, nsChange); var directions:String = "Click up / down arrows to frame atoms in text block above."; var formatItalic:ElementFormat = new ElementFormat(fontDescriptionItalic); formatItalic.fontSize = 12; var textElement1:TextElement = new TextElement(directions, formatItalic); textBlock.content = textElement1; createLines(textBlock, 15, 160, 400, this); var formatNormal:ElementFormat = new ElementFormat(fontDescriptionNormal); formatNormal.fontSize = 16; var textElement2:TextElement = new TextElement(myText, formatNormal); textBlock.content = textElement2; createLines(textBlock, 15.0, 20.0, 300, this); textLine = textBlock.firstLine; atomStepper.maximum = textLine.atomCount - 1; showAtom(textLine, 0); } private function nsChange(event:Event):void { removeAtom(textLine); if (atomStepper.value == textLine.atomCount - 1) { if(textLine != textBlock.lastLine) { textLine = textLine.nextLine; atomStepper.maximum = textLine.atomCount - 1; atomStepper.value = 0; } } showAtom(textLine, atomStepper.value); } private function createLines(textBlock, startX, startY, width, container) { var textLine:TextLine = textBlock.createTextLine (null, width); while (textLine) { textLine.x = startX; textLine.y = startY; startY += textLine.height + 2; container.addChild(textLine); textLine = textBlock.createTextLine (textLine, width); } } private function showAtom(textLine, i):void { var box:Sprite = new Sprite(); var mcGraphics = box.graphics; var bounds:Rectangle = textLine.getAtomBounds(i); mcGraphics.lineStyle(1, 0xFF0000, 1.0); mcGraphics.drawRect(bounds.left, bounds.top, bounds.width, bounds.height); textLine.userData = textLine.addChild(box); displayAtomData(textLine,i); } private function displayAtomData(textLine, i) { if(atomDataContainer != null) removeChild(atomDataContainer); atomDataContainer=new Sprite(); var format = new ElementFormat(fontDescriptionNormal); format.color = 0x00000FF; var n:int = 0; var nxtY:Number = 0; var atomInfo:String = "value of getAtomBidiLevel() is: " + textLine.getAtomBidiLevel(i)+"\n" +"value of getAtomCenter() is: " + textLine.getAtomCenter(i)+"\n" +"value of getAtomIndexAtCharIndex() is: " + textLine.getAtomIndexAtCharIndex(i)+"\n" +"value of getAtomTextBlockBeginIndex() is: " + textLine.getAtomTextBlockBeginIndex(i)+"\n" +"value of getAtomTextBlockEndIndex() is: " + textLine.getAtomTextBlockEndIndex(i)+"\n" +"value of getAtomTextRotation() is: " + textLine.getAtomTextRotation(i)+"\n"; var atomtextBlock:TextBlock = new TextBlock(); var textElement3:TextElement = new TextElement(atomInfo, format); atomtextBlock.content = textElement3; createLines(atomtextBlock,20,200,500, atomDataContainer) addChild(atomDataContainer); } private function removeAtom(textLine):void { textLine.removeChild(textLine.userData); } } }
Tue Jun 12 2018, 09:30 AM Z