flash.text.engine
public final class TextBlock
继承TextBlock Inheritance Object

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

TextBlock 类是用于创建 TextLine 对象的工厂,可以通过将其放在显示列表中来进行呈现。

TextBlock 类用于包含单个段落,因为 Unicode 双向算法和换行算法一次操作一个段落。对于包含多个文本段落的应用程序,请使用标记语言或文本分析将文本拆分为多个段落,并为每个段落创建一个 TextBlock。

TextBlock 对象在 content 属性中存储其内容,该属性是 ContentElement 类的一个实例。因为无法创建 ContentElement 类的实例,所以请将 content 设置为该类的以下其中一个子类的实例:TextElement、GraphicElement 或 GroupElement。请将 TextElement 用于纯文本内容、将 GraphicElement 用于图像或图形内容、将 GroupElement 用于包含 TextElement、GraphicElement 和其他 GroupElement 对象的组合的内容。有关管理带格式的文本串、嵌入的子串和图形元素的详细信息,请参阅 ContentElement 类及其子类。

在创建 TextBlock 实例并设置 content 属性后,可以调用 createTextLine() 方法以创建作为 TextLine 类的实例的文本行。

查看示例

另请参见

ContentElement
GraphicElement
GroupElement
TextBaseline
TextElement
TextJustifier
TextLine
TextRotation
TabStop


公共属性
 属性定义方
  applyNonLinearFontScaling : Boolean
指定想要以降低所见即所得 (WYSIWYG) 输出保真度为代价来增强屏幕外观。
TextBlock
  baselineFontDescription : FontDescription
用于确定从块中创建的所有行的基线的字体,这与行内容无关。
TextBlock
  baselineFontSize : Number
用于计算从块中创建的行的基线的字体大小。
TextBlock
  baselineZero : String
指定对于从此块中创建的行位置为 y=0 的基线。
TextBlock
  bidiLevel : int
指定文本在文本块中的默认双向嵌入级别。
TextBlock
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  content : ContentElement
容纳文本块的内容。
TextBlock
  firstInvalidLine : TextLine
[只读 (read-only)] 标识文本块内 TextLine.validity 不是 TextLineValidity.VALID 的第一行。
TextBlock
  firstLine : TextLine
[只读 (read-only)] TextBlock 中的第一个 TextLine,如果有。
TextBlock
  lastLine : TextLine
[只读 (read-only)] TextBlock 中的最后一个 TextLine,如果有。
TextBlock
  lineRotation : String
作为一个单元旋转文本块中的文本行。
TextBlock
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  tabStops : Vector.<TabStop>
指定文本块中文本的 Tab 停靠位,用 TabStop 对象的矢量形式表示。
TextBlock
  textJustifier : TextJustifier
指定在创建行的过程中要使用的 TextJustifier。
TextBlock
  textLineCreationResult : String
[只读 (read-only)] 指示 createTextLine() 操作的结果。
TextBlock
  userData : *
为作者提供了一种将任意数据与文本块相关联的途径。
TextBlock
公共方法
 方法定义方
  
TextBlock(content:ContentElement = null, tabStops:Vector.<TabStop> = null, textJustifier:TextJustifier = null, lineRotation:String = "rotate0", baselineZero:String = "roman", bidiLevel:int = 0, applyNonLinearFontScaling:Boolean = true, baselineFontDescription:FontDescription = null, baselineFontSize:Number = 12.0)
创建一个 TextBlock 对象
TextBlock
  
createTextLine(previousLine:TextLine = null, width:Number = 1000000, lineOffset:Number = 0.0, fitSomething:Boolean = false):TextLine
指示文本块从其内容中创建一行文本,从 previousLine 参数指定的点处开始并在 width 参数指定的点处换行。
TextBlock
  
将 TextBlock 的基础内容转储为 XML 字符串。
TextBlock
  
findNextAtomBoundary(afterCharIndex:int):int
从指定字符索引处查找下一个原子边界的索引,不包括指定索引处的字符。
TextBlock
  
findNextWordBoundary(afterCharIndex:int):int
从指定字符索引处开始查找下一个文字边界的索引,不包括指定索引处的字符。
TextBlock
  
查找指定字符索引之前的上一个原子边界的索引,不包括指定索引处的字符。
TextBlock
  
查找指定字符索引之前的上一个文字边界的索引,不包括指定索引处的字符。
TextBlock
  
返回包含由 charIndex 参数指定的字符的 TextLine。
TextBlock
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
releaseLines(firstLine:TextLine, lastLine:TextLine):void
从 TextBlock 保留的行列表中删除一系列文本行。
TextBlock
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
属性详细信息
applyNonLinearFontScaling属性
applyNonLinearFontScaling:Boolean  [读写]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

指定想要以降低所见即所得 (WYSIWYG) 输出保真度为代价来增强屏幕外观。对于支持非线性缩放的平台和字体,将此属性设置为 true 将允许以降低一定程度的 WYSIWYG 输出保真度为代价来使用这些度量,特别是对于小磅值字体。

默认值为 true



实现
    public function get applyNonLinearFontScaling():Boolean
    public function set applyNonLinearFontScaling(value:Boolean):void
baselineFontDescription属性 
baselineFontDescription:FontDescription  [读写]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

用于确定从块中创建的所有行的基线的字体,这与行内容无关。基线取决于字体和字体大小。

默认值为 null。如果基线字体为 null,则将忽略基线字体大小,并且任何给定行的基线将基于行中最大文本的字体和大小。如果指定 baselineFontDescriptionbaselineFontSize,它们将决定文本块中所有行的基线,而与行内容无关。这种组合在中文版式中最常用。



实现
    public function get baselineFontDescription():FontDescription
    public function set baselineFontDescription(value:FontDescription):void

另请参见

baselineFontSize属性 
baselineFontSize:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

用于计算从块中创建的行的基线的字体大小。基线取决于字体和字体大小。

默认值为 12。如果基线字体为 null,则将忽略基线字体大小,并且任何给定行的基线将基于行中最大文本的字体和大小。



实现
    public function get baselineFontSize():Number
    public function set baselineFontSize(value:Number):void

引发
ArgumentError — 指定的 baselineFontSize 小于 0。

另请参见

baselineZero属性 
baselineZero:String  [读写]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

指定对于从此块中创建的行位置为 y=0 的基线。此属性的有效值包括在 TextBaseline 类的成员中。

默认值为 TextBaseline.ROMAN

若要设置此属性的值,请使用下列字符串值:

字符串值Description
TextBaseline.ROMAN 行的罗马字基线位于 y=0 处。
TextBaseline.ASCENT 行的上缘基线位于 y=0 处。
TextBaseline.DESCENT 行的下缘基线位于 y=0 处。
TextBaseline.IDEOGRAPHIC_TOP 行的表意顶部基线位于 y=0 处。
TextBaseline.IDEOGRAPHIC_CENTER 行的表意中心基线位于 y=0 处。
TextBaseline.IDEOGRAPHIC_BOTTOM 行的表意底部基线位于 y=0 处。



实现
    public function get baselineZero():String
    public function set baselineZero(value:String):void

引发
ArgumentError — 如果设置的值不是 TextBaseline 的成员。

另请参见

bidiLevel属性 
bidiLevel:int  [读写]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

指定文本在文本块中的默认双向嵌入级别。偶数值表示从左向右,奇数值表示从右向左。您可以增加 bidiLevel,以指示特定文本从左向右以及从右向左嵌入的级别数。

默认值为 0。

如果修改 bidiLevel,则会将所有以前断开的行的有效性更改为 TextLineValidity.INVALID。更改 bidiLevel 后,firstInvalidLine 属性将等同于 firstLine 属性,并且您必须重新断开 TextBlock 中的所有行。



实现
    public function get bidiLevel():int
    public function set bidiLevel(value:int):void

引发
ArgumentError — 如果设置为小于 0 的值。

示例
此示例首先将 bidiLevel 设置为偶数来呈现文本字符串(逻辑顺序:a、b、c、alef、bet、gimel),然后设置为基数来呈现该字符串。
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;
    
    public class TextBlock_bidiLevelExample extends Sprite {
        
        public function TextBlock_bidiLevelExample():void {             
            var fontSize:Number = 36;

            var format:ElementFormat = new ElementFormat();        
            format.fontDescription = new FontDescription("Adobe Hebrew");
            format.fontSize = fontSize;
            var y:Number = 0;
            var leading:Number = fontSize * 0.2;
            var text:String = "abc" + String.fromCharCode(0x05D0, 0x05D1, 0x05D2);

            var textBlock:TextBlock = new TextBlock();
            textBlock.content = new TextElement(text, format);
                        
            // bidiLevel even
            textBlock.bidiLevel = 0;
            var textLine = textBlock.createTextLine(null, 400);
            y += leading + textLine.ascent;
            textLine.y = y;
            y += textLine.descent;
            addChild(textLine);      
            
            // bidiLevel odd
            textBlock.content = new TextElement(text, format);
            textBlock.bidiLevel = 1;
            textLine = textBlock.createTextLine(null, 400);
            y += leading + textLine.ascent;          
            textLine.y = y;
            addChild(textLine);   
        }
    }
}
content属性 
content:ContentElement  [读写]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

容纳文本块的内容。因为 ContentElement 是一个基类,所以请为 content 分配一个以下 ContentElement 子类的实例:TextElement、GraphicElement 或 GroupElement。TextElement 对象包含一个 String,GraphicElement 对象包含一个 DisplayObject,GroupElement 包含一个 Vector 对象,该对象包含一个或多个 TextElement、GraphicElement 或其他 GroupElement 对象。请将 TextElement 用于一段同源文本,将 GraphicElement 用于图形,将 GroupElement 用于文本和图形元素或这些元素的多个实例的组合以及其他 GroupElement 对象。

默认值为 null .

如果修改 content 属性,则会将所有以前创建的行的 validity 更改为 TextLineValidity.INVALID。更改 content 后,firstInvalidLine 属性将等同于 firstLine 属性,并且您必须重新断开 TextBlock 中的所有行。



实现
    public function get content():ContentElement
    public function set content(value:ContentElement):void

引发
ArgumentError — 如果设置的值不是 ContentElement 的已知子类。
 
ArgumentError — 指定的 value 已经是组成员。

另请参见

firstInvalidLine属性 
firstInvalidLine:TextLine  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

标识文本块内 TextLine.validity 不是 TextLineValidity.VALID 的第一行。

默认值为 null



实现
    public function get firstInvalidLine():TextLine

另请参见

firstLine属性 
firstLine:TextLine  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

TextBlock 中的第一个 TextLine,如果有。

默认值为 null



实现
    public function get firstLine():TextLine

另请参见

lastLine属性 
lastLine:TextLine  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

TextBlock 中的最后一个 TextLine,如果有。

默认值为 null



实现
    public function get lastLine():TextLine

另请参见

lineRotation属性 
lineRotation:String  [读写]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

作为一个单元旋转文本块中的文本行。在设置 lineRotation 之后调用 createTextLine() 方法,以使设置生效。默认值为 TextRotation.ROTATE_0

任何字型的最终旋转都取决于 ElementFormat.textRotationContentElement.textRotationTextBlock.lineRotation 的值。

TextBlock.lineRotation 通常用于亚洲文字。若要创建日文垂直文本段落,请执行以下操作:

  1. TextBlock.lineRotation 属性设置为 TextRotation.ROTATE_90
  2. 将内容的 ElementFormat.textRotation 属性保留为默认值 TextRotation.AUTO

使用在 TextRotation 类中定义的以下常量设置此属性的值:

字符串值Description
TextRotation.ROTATE_0 不旋转行。
TextRotation.ROTATE_90 将行顺时针旋转 90 度。
TextRotation.ROTATE_180 将行旋转 180 度。
TextRotation.ROTATE_270 将行顺时针旋转 270 度。
TextRotation.AUTO 不支持.



实现
    public function get lineRotation():String
    public function set lineRotation(value:String):void

引发
ArgumentError — 如果设置的值不是 TextRotation 的成员。
 
ArgumentError — 如果设置为 TextRotation.AUTO

另请参见


示例
此示例向 TextBlock 添加日文文本并将 lineRotation 属性设置为 TextRotation.ROTATE_90 以便垂直显示行。
package {
    import flash.display.Sprite;
    import flash.text.engine.FontDescription;
    import flash.text.engine.TextBlock;
    import flash.text.engine.TextElement;
    import flash.text.engine.TextLine;
    import flash.text.engine.TextRotation;
    import flash.text.engine.ElementFormat;
    
    public class TextBlock_lineRotationExample extends Sprite {
        
        public function TextBlock_lineRotationExample():void {
            var Japanese:String = String.fromCharCode(
                0x5185, 0x95A3, 0x5E9C, 0x304C, 0x300C, 0x653F, 0x5E9C, 0x30A4,
                0x30F3, 0x30BF, 0x30FC, 0x30CD, 0x30C3, 0x30C8, 0x30C6, 0x30EC, 
                0x30D3, 0x300D, 0x306E, 0x52D5, 0x753B, 0x914D, 0x4FE1, 0x5411, 
                0x3051, 0x306B, 0x30A2, 0x30C9, 0x30D3, 0x30B7, 0x30B9, 0x30C6, 
                0x30E0, 0x30BA, 0x793E, 0x306E
            ) +
            "FMS 2" +
            String.fromCharCode(0x3092, 0x63A1, 0x7528, 0x3059, 0x308B, 0x3068, 
                0x767a, 0x8868, 0x3057, 0x307e, 0x3057, 0x305F, 0x3002);

            var fontDescription:FontDescription = new FontDescription("MS Mincho");
            var format:ElementFormat = new ElementFormat();
            format.fontSize = 15;
            format.fontDescription = fontDescription;
                        
            var textElement:TextElement = new TextElement(Japanese, format); 
            var textBlock:TextBlock = new TextBlock();
            textBlock.content = textElement;
            textBlock.lineRotation = TextRotation.ROTATE_90;

            var linePosition:Number = this.stage.stageWidth - 120;
            var previousLine:TextLine = null;
        
            while (true) {
                var textLine:TextLine = textBlock.createTextLine(
                    previousLine, 
                    300);
                if (textLine == null) 
                    break;
                textLine.y = 30;    
                textLine.x = linePosition;
                linePosition -= 24;
                addChild(textLine);                
                previousLine = textLine;
            }        
        }
    }
}
tabStops属性 
tabStops:Vector.<TabStop>  [读写]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

指定文本块中文本的 Tab 停靠位,用 TabStop 对象的矢量形式表示。

默认值为 null,意味着不启用 Tab 停靠位。如果没有设置 Tab 停靠位,则制表符 (\t) 将导致生成新的行。

如果设置了 tabStops 属性,TextBlock 将制作此 Vector 的副本供内部使用。修改原始 Vector 或其内容不会影响 TextBlock。如果对 tabStops 属性进行查询,将返回此内部 Vector 的副本。同样,修改此返回的矢量或其内容不会影响 TextBlock。



实现
    public function get tabStops():Vector.<TabStop>
    public function set tabStops(value:Vector.<TabStop>):void

引发
ArgumentError — 指定的 tabStops 包含 null 元素。
 
ArgumentError — 指定的 tabStops 不是按位置增加顺序排序的。

另请参见

textJustifier属性 
textJustifier:TextJustifier  [读写]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

指定在创建行的过程中要使用的 TextJustifier。

默认值为默认构造的 TextJustifier 对象。

如果设置了 textJustifier 属性,TextBlock 将制作此对象的副本供内部使用。修改原始对象不会影响 TextBlock。如果对 textJustifier 属性进行查询,将返回此内部对象的副本。同样,修改此返回的对象不会影响 TextBlock。



实现
    public function get textJustifier():TextJustifier
    public function set textJustifier(value:TextJustifier):void

引发
ArgumentError — 如果设置的值不是 TextJustifier 的已知子类。

另请参见

textLineCreationResult属性 
textLineCreationResult:String  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

指示 createTextLine() 操作的结果。更改该块的内容将使先前断开的行无效,并会将此属性重置为 null

默认值为 null

此属性的值包括在 TextLineCreationResult

字符串值Description
TextLineCreationResult.SUCCESS 行已成功断开。
TextLineCreationResult.COMPLETE 创建的新行已经与从 POSSIBLY_INVALID 转换到 VALID 的后续行完全对齐,或者是由于块中的所有文本已经断行而未创建任何行。
TextLineCreationResult.INSUFFICIENT_WIDTH 由于文本无法适合指定的宽度,因此未创建任何行。



实现
    public function get textLineCreationResult():String

另请参见

userData属性 
public var userData:*

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

为作者提供了一种将任意数据与文本块相关联的途径。数据可以是与内容相关的信息,例如修订日期或作者的姓名,或者也可以是处理过程中使用的缓存数据。

构造函数详细信息
TextBlock()构造函数
public function TextBlock(content:ContentElement = null, tabStops:Vector.<TabStop> = null, textJustifier:TextJustifier = null, lineRotation:String = "rotate0", baselineZero:String = "roman", bidiLevel:int = 0, applyNonLinearFontScaling:Boolean = true, baselineFontDescription:FontDescription = null, baselineFontSize:Number = 12.0)

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

创建一个 TextBlock 对象

参数
content:ContentElement (default = null) — 文本块的内容。
 
tabStops:Vector.<TabStop> (default = null) — 文本块中文本的 Tab 停靠位。
 
textJustifier:TextJustifier (default = null) — 为此块创建行的过程中要使用的 TextJustifier 对象。如果未提供对齐符,则将基于英语区域设置构造默认对齐符。
 
lineRotation:String (default = "rotate0") — 作为一个单元应用于从文本块生成的文本行的旋转。
 
baselineZero:String (default = "roman") — 指定哪条基线对于块中的所有行均为 y=0。
 
bidiLevel:int (default = 0) — 文本在文本块中的默认双向嵌入级别。
 
applyNonLinearFontScaling:Boolean (default = true) — 指定想要以降低 WYSIWYG 输出保真度为代价来增强屏幕外观。
 
baselineFontDescription:FontDescription (default = null) — 指定用以推导块中所有行的行基线的字体说明。
 
baselineFontSize:Number (default = 12.0) — 指定用于 baselineFontDescription 的大小。如果 baselineFontDescriptionnull,则忽略此参数。

引发
ArgumentError — 指定的 content 不是 ContentElement 的已知子类。
 
ArgumentError — 指定的 content 已经是组成员。
 
ArgumentError — 指定的 lineRotation 不是 TextRotation 的成员。
 
ArgumentError — 指定的 baselineZero 不是 TextBaseline 的成员。
 
ArgumentError — 指定的 bidiLevel 小于 0。
 
ArgumentError — 指定的 tabStops 包含 null 元素。
 
ArgumentError — 指定的 tabStops 不是按位置增加顺序排序的。
 
ArgumentError — 指定的 baselineFontSize 小于 0。

另请参见

方法详细信息
createTextLine()方法
public function createTextLine(previousLine:TextLine = null, width:Number = 1000000, lineOffset:Number = 0.0, fitSomething:Boolean = false):TextLine

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

指示文本块从其内容中创建一行文本,从 previousLine 参数指定的点处开始并在 width 参数指定的点处换行。文本行是 TextLine 对象,您可以将该对象添加到显示列表中。

对文本块中已经断行的范围进行断行会更改断行区域内外的行的有效性。行的状态可能会从 VALID 更改为 INVALID 或 POSSIBLY_INVALID。如果新断开的行与状态为 POSSIBLY_INVALID 的以前断开的行完全对齐,则以前断开的行和所有以下 POSSIBLY_INVALID 行将改回 VALID 状态。已经设置为非 TextLineValidity 成员的值的各行的 validity 不会更改为 VALID,但可以更改为 INVALID。在对文本块进行任何更改后请检查 firstInvalidLine 属性,以查看要开始或继续重新换行的位置。

通过在文本中包括 Unicode 零宽度间隔 (ZWSP) 字符可以创建人工文字换行。这对泰语这样需要字典才能正确换行的语言很有用。Flash Player 不包括这样的字典。

参数

previousLine:TextLine (default = null) — 指定在其后开始断开的上一个断行。在对第一行换行时可以是 null
 
width:Number (default = 1000000) — 以像素为单位指定所需的行宽度。实际宽度可能更小。
 
lineOffset:Number (default = 0.0) — 一个可选参数,以像素为单位指定行的起点和 Tab 停靠位起点之间的距离。当行未对齐但其 Tab 停靠位需要对齐时可以使用此参数。此参数的默认值为 0.0
 
fitSomething:Boolean (default = false) — 一个可选参数,指示 Flash Player 至少使一个字符适合文本行,不管指定的宽度如何(即使宽度为零或负值,在这种情况下,将导致引发异常)。

返回
TextLine — 一个文本行,如果文本块为空或指定的宽度小于下一个元素的宽度,则为 null。若要区分这些情况,请检查文本块的 textLineCreationResult 属性。

引发
ArgumentError — 如果由 previousLine 指定的 TextLine 无效。
 
ArgumentError — 如果 width 小于零;除非 fitSomething 为 true。
 
ArgumentError — 如果 width 大于 TextLine.MAX_LINE_WIDTH
 
IllegalOperationError — 如果文本块内容中的一个或多个元素具有 null ElementFormat

另请参见


示例

本示例调用 createTextLine() 方法在文本块中创建文本行。该示例通过执行以下任务完成此操作:
  • 从 String 创建一个 TextElement 并为其指定字体大小 20
  • 创建一个 TextBlock 并为其分配 TextElement
  • 调用 createTextLine() 以从文本块创建 300 像素宽的行
  • 将每行放在舞台上 (addChild()) 并设置其位置(xy
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;
    
    public class TextBlock_createTextLineExample extends Sprite {
        
        public function TextBlock_createTextLineExample():void {
            
            var str:String = "I am a TextElement, created from a String and assigned " +
            "to the content property of a TextBlock. The createTextLine() method " +
            "then created these lines, 300 pixels wide, for display." ;
            
            var fontDescription:FontDescription = new FontDescription("Arial");
            var format:ElementFormat = new ElementFormat(fontDescription);
            format.fontSize = 16;
            var textElement:TextElement = new TextElement(str, format); 
            var textBlock:TextBlock = new TextBlock();
            textBlock.content = textElement; 
            createLines(textBlock); 
        }
        
        private function createLines(textBlock:TextBlock):void 
        {            
            var lineWidth:Number = 300;
            var xPos:Number = 15.0;
            var yPos:Number = 20.0;
            
            var textLine:TextLine = textBlock.createTextLine (null, lineWidth);
            while (textLine)
            {
                textLine.x = xPos;
                textLine.y = yPos;
                yPos += textLine.height + 2;
                addChild (textLine);
                textLine = textBlock.createTextLine (textLine, lineWidth);
            }
        }
    }
}
dump()方法 
public function dump():String

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

将 TextBlock 的基础内容转储为 XML 字符串。这在自动测试过程中很有用,并包括文本、格式和呈现信息。它仅在调试版 Flash Player 中可用。

注意:输出的内容和格式将来可能会发生更改。Adobe 不保证此方法的向后兼容性。

下表对输出进行说明:

标签属性Description
<block>  TextBlock
<line  TextLine
  s= 开始使用内联的 run 元素
  l= 限制内联的 run 元素
>  line 的结束标记
<run  行元素
  s= 开始使用内联的 run 元素
  l= 限制内联的 run 元素
>  run 的结束标记
<inter  inter 元素
  cursor= 字符光标(原始文本的索引)
  tcb= 印刷簇边界
  wb= 文字边界
  lbo= 换行
  lb= 实际换行符
/>  inter 的结束标记
<char  字符元素
  usv= Unicode 标量值
/>  char 的结束标记
<glyph  计算的字型元素或成形的字型元素
  font= 字体名称
  gid= 字型索引
  xa= xAdvance
  ya= yAdvance
  xp= xPlacement
  yp= yPlacement
  r= rotation
  color= color
  xP= xPosition
  yP= yPosition
  attached= 两个元素是否相连
  itcbo= 内部印刷簇边界偏移
  bl= 双向级别
  sc= 间距类
/>  glyph 的结束标记
<fo  graphic 元素
  id= 元素 ID
  xa= xAdvance
  ya= yAdvance
  xp= xPlacement
  yp= yPlacement
  r= rotation
  color= color
  xP= xPosition
  yP= yPosition
  lb= 左边界
  rb= 右边界
  tb= 上边界
  bb= 下边界
  itcbo= 内部印刷簇边界偏移
  bl= 双向级别
  sc= 间距类
/>  fo 的结束标记
<embeddedRun  embedded run
  xa= xAdvance
  ya= yAdvance
  xp= xPlacement
  yp= yPlacement
  r= rotation
  xP= xPosition
  yP= yPosition
>  embeddedRun 的结束标记
<run>  run
</run>  run 的结束标记
</embeddedRun>  embeddedRun 的结束标记
<carets  行的尖号
  s= 开始使用内联的 run 元素
  l= 限制内联的 run 元素
>  carets 的结束标记
<cursor>  cursor
  x= 左边的 x 位置
/>  cursor 的结束标记
<cluster  cluster
  c= 中心位置
  s= 开始使用 tc 偏移
  l= 限制 tc 偏移
  bidi 双向级别
/>  cluster 的结束标记
</carets>  carets 的结束标记
</line>  line 的结束标记
</block>  block 的结束标记

返回
String

另请参见

findNextAtomBoundary()方法 
public function findNextAtomBoundary(afterCharIndex:int):int

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

从指定字符索引处查找下一个原子边界的索引,不包括指定索引处的字符。原子边界之间的字符在 TextLine 中结合成一个原子,如“e”和组合重音符。

参数

afterCharIndex:int — 指定要从其开始搜索下一个原子边界的字符的索引。

返回
int — 从指定字符索引处开始的下一个原子边界的索引。

引发
RangeError — 指定的 index 超出范围。
 
IllegalOperationError — 索引字符所属的 TextLine 无效。

另请参见

findNextWordBoundary()方法 
public function findNextWordBoundary(afterCharIndex:int):int

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

从指定字符索引处查找下一个文字边界的索引,不包括指定索引处的字符。文字边界的确定依据是字符的 Unicode 属性。

参数

afterCharIndex:int — 指定要从其开始搜索下一个文字边界的字符的索引。

返回
int — 从指定字符索引处开始的下一个文字边界的索引。

引发
RangeError — 指定的 index 超出范围。
 
IllegalOperationError — 索引字符所属的 TextLine 无效。
findPreviousAtomBoundary()方法 
public function findPreviousAtomBoundary(beforeCharIndex:int):int

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

查找指定字符索引之前的上一个原子边界的索引,不包括指定索引处的字符。原子边界之间的字符在 TextLine 中结合成一个原子,如“e”和组合重音符。

参数

beforeCharIndex:int — 指定要从其开始搜索上一个原子边界的字符的索引。

返回
int — 指定字符索引之前的上一个原子边界的索引。

引发
RangeError — 指定的 index 超出范围。
 
IllegalOperationError — 索引字符所属的 TextLine 无效。

另请参见

findPreviousWordBoundary()方法 
public function findPreviousWordBoundary(beforeCharIndex:int):int

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

查找指定字符索引之前的上一个文字边界的索引,不包括指定索引处的字符。文字边界的确定依据是字符的 Unicode 属性。

参数

beforeCharIndex:int — 指定要从其开始搜索上一个文字边界的字符的索引。

返回
int — 指定字符索引之前的上一个文字边界的索引。

引发
RangeError — 指定的 index 超出范围。
 
IllegalOperationError — 索引字符所属的 TextLine 无效。
getTextLineAtCharIndex()方法 
public function getTextLineAtCharIndex(charIndex:int):TextLine

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

返回包含由 charIndex 参数指定的字符的 TextLine。

参数

charIndex:int — 从零开始的字符索引值(例如,第一个字符的索引值是 0,第二个字符的索引值是 1,依此类推)。

返回
TextLine — 包含 charIndex 处的字符的 TextLine .

引发
RangeError — 指定的字符索引超出范围。
releaseLines()方法 
public function releaseLines(firstLine:TextLine, lastLine:TextLine):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

从 TextBlock 保留的行列表中删除一系列文本行。在没有其它引用的情况下允许将行作为垃圾回收。

将已删除行的 textBlocknextLinepreviousLine 成员设置为 null。将已删除行以及 TextBlock 中已删除行后面的所有行的有效性设置为 TextLineValidity.INVALID

参数

firstLine:TextLine — 指定要释放的第一行。
 
lastLine:TextLine — 指定要释放的最后一行。


引发
ArgumentError — 如果 firstLinelastLine 所指定的 TextLine 不在文本块所保留的文本行列表中。

另请参见

示例 如何使用示例
TextBlockExample.as

本示例显示三个日文和英文文本的 TextBlock 段落。将日文文本从 Unicode 字符代码转换为字符串。当您单击该按钮时,本示例将文本从水平旋转为垂直或从垂直旋转为水平。
  1. 将 Button 添加到库中。
  2. 将此代码作为 TextBlockExample.as 保存到 FLA 文件所在的同一目录中。
  3. 将 FLA 的“属性”面板中的“类”设置为“TextBlockExample”。
package { 
    import fl.controls.Button;
     import flash.text.engine.TextBlock;
    import flash.text.engine.TextLine;
    import flash.text.engine.TextElement;
    import flash.text.engine.ElementFormat;
    import flash.text.engine.TextRotation;
    import flash.text.engine.TextBaseline;
    import flash.text.engine.LineJustification;
    import flash.text.engine.FontDescription;
    import flash.text.engine.EastAsianJustifier; 
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.display.Stage;
    import flash.events.MouseEvent;
    import flash.system.Capabilities;
    
    public class TextBlockExample extends Sprite {
        
        var vertical:Boolean;    
        var container:Sprite;
        var textBlocks:Vector.<TextBlock>;
        var loader:Loader = new Loader();
        var directionButton:Button = new Button();
        
        public function TextBlockExample():void {
            addChild(directionButton);
            directionButton.width = 30;
            directionButton.move(50, 350);
            directionButton.addEventListener(MouseEvent.CLICK, clickHandler);
            createContent();
            createLines();
        }

        private function createEmptyBlock():TextBlock {
        
            var textBlock:TextBlock = new TextBlock();
            textBlock.baselineZero = TextBaseline.IDEOGRAPHIC_CENTER;
            textBlock.textJustifier = new EastAsianJustifier("ja", LineJustification.ALL_BUT_LAST);
            textBlock.lineRotation = vertical? TextRotation.ROTATE_90: TextRotation.ROTATE_0;
            return textBlock;    
        }
        
        private function paragraph1(format:ElementFormat):TextBlock {
        
            var textBlock:TextBlock = createEmptyBlock();
            textBlock.content = new TextElement(
            String.fromCharCode(
                0x5185, 0x95A3, 0x5E9C, 0x304C, 0x300C, 0x653F, 0x5E9C, 0x30A4,
                0x30F3, 0x30BF, 0x30FC, 0x30CD, 0x30C3, 0x30C8, 0x30C6, 0x30EC, 
                0x30D3, 0x300D, 0x306E, 0x52D5, 0x753B, 0x914D, 0x4FE1, 0x5411, 
                0x3051, 0x306B, 0x30A2, 0x30C9, 0x30D3, 0x30B7, 0x30B9, 0x30C6, 
                0x30E0, 0x30BA, 0x793E, 0x306E
            ) +
            "FMS 2" +
            String.fromCharCode(0x3092, 0x63A1, 0x7528, 0x3059, 0x308B, 0x3068, 
                0x767a, 0x8868, 0x3057, 0x307e, 0x3057, 0x305F, 0x3002), format);
            return textBlock;
        }

        private function paragraph2(format:ElementFormat):TextBlock {
            
            var textBlock:TextBlock = createEmptyBlock();
            textBlock.content = new TextElement(
            String.fromCharCode(
                0x30AF, 0x30ED, 0x30B9, 0x30D7, 0x30E9, 0x30C3, 0x30C8, 0x30D5, 
                0x30A9, 0x30FC, 0x30E0, 0x4E0A, 0x3067, 0x518D, 0x751F, 0x53EF, 
                0x80FD, 0x306A
            ) + 
            "Flash Video" +
            String.fromCharCode(
                0x3092, 0x914D, 0x4FE1, 0x3001, 0x653F, 0x5E9C, 0x6700, 0x65B0, 
                0x60C5, 0x5831, 0x3092, 0x3088, 0x308A, 0x591A, 0x304F, 0x306E, 
                0x56FD, 0x6C11, 0x306B, 0x9AD8, 0x54C1, 0x8CEA, 0x306A, 0x753B, 
                0x50CF, 0x3067, 0x7C21, 0x5358, 0x304B, 0x3064, 0x30EA, 0x30A2, 
                0x30EB, 0x30BF, 0x30A4, 0x30E0, 0x306B, 0x63D0, 0x4F9B, 0x3059, 
                0x308B, 0x3053, 0x3068, 0x304C, 0x53EF, 0x80FD, 0x306B, 0x306A, 
                0x308A, 0x307e, 0x3057, 0x305F, 0x3002), format);
            return textBlock;    
        }

        private function paragraph3(format:ElementFormat):TextBlock {
            
            var textBlock:TextBlock = createEmptyBlock();
            textBlock.content = new TextElement(
            String.fromCharCode(0x3010) +
            "2007" +
            String.fromCharCode(0x5E74) + "2" + String.fromCharCode(0x6708) +
            "21" +
            String.fromCharCode(0x65E5, 0x3011),
            format);
            return textBlock;    
        }

        private function createContent():void {
            
            var font:FontDescription = new FontDescription();
            if (Capabilities.os.search("Mac OS") > -1) 
                font.fontName = String.fromCharCode(0x5C0F, 0x585A, 0x660E, 0x671D) + " Pro R"; // "Kozuka Mincho Pro R"                    koFont.fontName = "Adobe " + String.fromCharCode(0xBA85, 0xC870) + " Std M"; // "Adobe Myungjo Std M"
            else 
                font.fontName = "Kozuka Mincho Pro R";        
            var format:ElementFormat = new ElementFormat();
            format.fontDescription = font;
            format.fontSize = 12;
            format.locale = "ja";
            format.color = 0x000000;
            if (!vertical) 
                format.textRotation = TextRotation.ROTATE_0; 
            textBlocks = new Vector.<TextBlock>();
            textBlocks.push(
                paragraph1(format),
                paragraph2(format),
                paragraph3(format)//,
            );
        }

        private function createLines():void {    
        
            if (container != null) {
                removeChild(container);
            }            
            container = new Sprite();
            container.y = 45;
            container.x = 40;
            addChild(container);
            var linePosition:Number = vertical? this.stage.stageWidth - 120: 12;
        
            for (var i:uint = 0; i < textBlocks.length; i++) {
                var textBlock:TextBlock = textBlocks[i];
                var previousLine:TextLine = null;
        
                while (true) {
                    var textLine:TextLine = textBlock.createTextLine(
                        previousLine, 
                        300);
                    if (textLine == null) 
                        break;
                    if (vertical) 
                    {
                        textLine.x = linePosition;
                        linePosition -= 24;
                        directionButton.label = " -- ";
                    }
                    else 
                    {
                        textLine.y = linePosition+50;
                        linePosition += 24;
                        directionButton.label = " | ";
                    }
                    container.addChild(textLine);                
                    previousLine = textLine;
                }
                if (vertical) 
                    linePosition -= 16;
                else 
                    linePosition += 16; 
            }
        }

        private function clickHandler(event:MouseEvent):void {
            
            vertical = !vertical;
            createContent();
            createLines();
        }
    }
}