包 | flash.text.engine |
类 | public final class TextBlock |
继承 | TextBlock Object |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10, AIR 1.5 |
TextBlock 类用于包含单个段落,因为 Unicode 双向算法和换行算法一次操作一个段落。对于包含多个文本段落的应用程序,请使用标记语言或文本分析将文本拆分为多个段落,并为每个段落创建一个 TextBlock。
TextBlock 对象在 content
属性中存储其内容,该属性是 ContentElement 类的一个实例。因为无法创建 ContentElement 类的实例,所以请将 content
设置为该类的以下其中一个子类的实例:TextElement、GraphicElement 或 GroupElement。请将 TextElement 用于纯文本内容、将 GraphicElement 用于图像或图形内容、将 GroupElement 用于包含 TextElement、GraphicElement 和其他 GroupElement 对象的组合的内容。有关管理带格式的文本串、嵌入的子串和图形元素的详细信息,请参阅 ContentElement 类及其子类。
在创建 TextBlock 实例并设置 content
属性后,可以调用 createTextLine()
方法以创建作为 TextLine
类的实例的文本行。
另请参见
属性 | 定义方 | ||
---|---|---|---|
applyNonLinearFontScaling : Boolean 指定想要以降低所见即所得 (WYSIWYG) 输出保真度为代价来增强屏幕外观。 | TextBlock | ||
baselineFontDescription : FontDescription 用于确定从块中创建的所有行的基线的字体,这与行内容无关。 | TextBlock | ||
baselineFontSize : Number 用于计算从块中创建的行的基线的字体大小。 | TextBlock | ||
baselineZero : String 指定对于从此块中创建的行位置为 y=0 的基线。 | TextBlock | ||
bidiLevel : int 指定文本在文本块中的默认双向嵌入级别。 | TextBlock | ||
constructor : 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 | ||
prototype : 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 | ||
从指定字符索引处查找下一个原子边界的索引,不包括指定索引处的字符。 | TextBlock | ||
从指定字符索引处开始查找下一个文字边界的索引,不包括指定索引处的字符。 | TextBlock | ||
查找指定字符索引之前的上一个原子边界的索引,不包括指定索引处的字符。 | TextBlock | ||
查找指定字符索引之前的上一个文字边界的索引,不包括指定索引处的字符。 | TextBlock | ||
返回包含由 charIndex 参数指定的字符的 TextLine。 | TextBlock | ||
指示对象是否已经定义了指定的属性。 | Object | ||
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
指示指定的属性是否存在、是否可枚举。 | Object | ||
从 TextBlock 保留的行列表中删除一系列文本行。 | TextBlock | ||
设置循环操作动态属性的可用性。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | 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
,则将忽略基线字体大小,并且任何给定行的基线将基于行中最大文本的字体和大小。如果指定 baselineFontDescription
和 baselineFontSize
,它们将决定文本块中所有行的基线,而与行内容无关。这种组合在中文版式中最常用。
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.textRotation
、ContentElement.textRotation
和 TextBlock.lineRotation
的值。
TextBlock.lineRotation
通常用于亚洲文字。若要创建日文垂直文本段落,请执行以下操作:
TextBlock.lineRotation
属性设置为 TextRotation.ROTATE_90
。
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 。
|
另请参见
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 的大小。如果 baselineFontDescription 为 null ,则忽略此参数。
|
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()
方法在文本块中创建文本行。该示例通过执行以下任务完成此操作:
createTextLine()
以从文本块创建 300 像素宽的行
addChild()
) 并设置其位置(x
和 y
)
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 保留的行列表中删除一系列文本行。在没有其它引用的情况下允许将行作为垃圾回收。
将已删除行的 textBlock
、nextLine
和 previousLine
成员设置为 null
。将已删除行以及 TextBlock 中已删除行后面的所有行的有效性
设置为 TextLineValidity.INVALID
。
参数
firstLine:TextLine — 指定要释放的第一行。 | |
lastLine:TextLine — 指定要释放的最后一行。 |
ArgumentError —
如果 firstLine 或 lastLine 所指定的 TextLine 不在文本块所保留的文本行列表中。
|
另请参见
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(); } } }