flash.text.engine
public final class TextLine
继承TextLine Inheritance DisplayObjectContainer Inheritance InteractiveObject Inheritance DisplayObject Inheritance EventDispatcher Inheritance Object

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

TextLine 类用于在显示列表上显示文本。

无法从 ActionScript 代码直接创建 TextLine 对象。如果调用 new TextLine(),则会引发异常。若要创建 TextLine 对象,请调用 TextBlock 的 createTextLine() 方法。

TextLine 封装呈现其内容所必需的最少的信息。您可以通过一些方法检索对交互有用的其它信息,这些方法描述了行原子的属性。术语“原子”是指图形元素和字符(包括字符合并组),是组成文本行的不可分割的实体。务必请注意,在调用这些方法之前,播放器不会创建或存储这些方法所需要的数据。为了避免增加内存开销,除非必要,否则请不要创建原子数据。如果不再需要原子数据,可以调用 flushAtomData() 方法对其进行垃圾回收。

以下方法和属性将会生成原子数据(如果数据不存在):

在针对文本行的正常事件调度完成后,如果该文本行有效,则将事件镜像到分配给该文本行的内容元素对象的 eventMirror 属性中指定的事件调度程序。这些对象记录在 TextLine.mirrorRegions 属性中。如果事件传播失败或被中止,或者如果文本行无效,则不会镜像事件。

镜像鼠标事件是一个特例。由于镜像区域并不实际显示对象,因此将为这些区域模拟 mouseOvermouseOut 事件。并不模拟 rollOverrollOut 事件。忽略所有自然发生的 mouseOvermouseOutrollOverrollOut 事件(无论这些事件将文本行作为目标还是将文本行的子项作为目标),而不会对其进行镜像。

文本行对象的原点是基线的开始位置。如果在罗马字基线上没有设置包含拉丁文本的行的垂直位置(y 属性),则只有文本的下行字符将显示在向其中添加文本行的 Sprite 的顶部之下。请参阅下图:

文本基线

TextLine 类具有多个始祖类(DisplayObjectContainer、InteractiveObject、DisplayObject 和 EventDispatcher),并从这些始祖类继承属性和方法。以下继承的属性不适用于 TextLine 对象:

如果您尝试设置这些属性,则文本引擎将引发错误:IllegalOperationError。您可以读取这些属性,但是它们将始终包含默认值。

查看示例

另请参见

ContentElement.eventMirror
TextBlock.createTextLine()
TextLineValidity


公共属性
 属性定义方
 InheritedaccessibilityProperties : AccessibilityProperties
此显示对象的当前辅助功能选项。
DisplayObject
 Inheritedalpha : Number
指示指定对象的 Alpha 透明度值。
DisplayObject
  ascent : Number
[只读 (read-only)] 指定从基线到行中最高字符顶部的像素数。
TextLine
  atomCount : int
[只读 (read-only)] 行中的原子数,即不可分割的元素数,其中包括空格和图形元素。
TextLine
 InheritedblendMode : String
BlendMode 类中的一个值,用于指定要使用的混合模式。
DisplayObject
 InheritedblendShader : Shader
[只写] 设置用于混合前景和背景的着色器。
DisplayObject
 InheritedcacheAsBitmap : Boolean
如果设置为 true,则 Flash Player 或 Adobe AIR 将缓存显示对象的内部位图表示形式。
DisplayObject
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
 InheritedcontextMenu : NativeMenu
指定与此对象相关联的上下文菜单。
InteractiveObject
  descent : Number
[只读 (read-only)] 指定从基线到行中最低字符底部的像素数。
TextLine
 InheriteddoubleClickEnabled : Boolean
指定此对象是否接收 doubleClick 事件。
InteractiveObject
 Inheritedfilters : Array
包含当前与显示对象关联的每个滤镜对象的索引数组。
DisplayObject
 InheritedfocusRect : Object
指定此对象是否显示焦点矩形。
InteractiveObject
  hasGraphicElement : Boolean
[只读 (read-only)] 指示文本行是否包含任何图形元素。
TextLine
 Inheritedheight : Number
指示显示对象的高度,以像素为单位。
DisplayObject
 InheritedloaderInfo : LoaderInfo
[只读 (read-only)] 返回一个 LoaderInfo 对象,其中包含加载此显示对象所属的文件的相关信息。
DisplayObject
 Inheritedmask : DisplayObject
调用显示对象被指定的 mask 对象遮罩。
DisplayObject
  mirrorRegions : Vector.<TextLineMirrorRegion>
[只读 (read-only)] 包含与行相关联的 TextLineMirrorRegion 对象的矢量;如果没有这样的对象,则为 null。
TextLine
 InheritedmouseChildren : Boolean
确定对象的子项是否支持鼠标。
DisplayObjectContainer
 InheritedmouseEnabled : Boolean
指定此对象是否接收鼠标消息。
InteractiveObject
 InheritedmouseX : Number
[只读 (read-only)] 指示鼠标位置的 x 坐标,以像素为单位。
DisplayObject
 InheritedmouseY : Number
[只读 (read-only)] 指示鼠标位置的 y 坐标,以像素为单位。
DisplayObject
 Inheritedname : String
指示 DisplayObject 的实例名称。
DisplayObject
  nextLine : TextLine
[只读 (read-only)] TextBlock 中的下一个 TextLine;如果当前行是块中的最后一行或行的 validity 为 TextLineValidity.STATIC,则为 null。
TextLine
 InheritednumChildren : int
[只读 (read-only)] 返回此对象的子项数目。
DisplayObjectContainer
 InheritedopaqueBackground : Object
指定显示对象是否由于具有某种背景颜色而不透明。
DisplayObject
 Inheritedparent : DisplayObjectContainer
[只读 (read-only)] 指示包含此显示对象的 DisplayObjectContainer 对象。
DisplayObject
  previousLine : TextLine
[只读 (read-only)] TextBlock 中的上一个 TextLine;如果行是块中的第一行或行的 validity 为 TextLineValidity.STATIC,则为 null。
TextLine
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  rawTextLength : int
[只读 (read-only)] 文本块中构成行的原始文本的长度,包括表示图形元素的 U+FDEF 字符以及构成该行的一部分但不会显示的任何尾随空格。
TextLine
 Inheritedroot : DisplayObject
[只读 (read-only)] 对于加载的 SWF 文件中的显示对象,root 属性是此 SWF 文件所表示的显示列表树结构部分中的顶级显示对象。
DisplayObject
 Inheritedrotation : Number
指示 DisplayObject 实例距其原始方向的旋转程度,以度为单位。
DisplayObject
 InheritedrotationX : Number
指示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 x 轴旋转(以度为单位)。
DisplayObject
 InheritedrotationY : Number
指示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 y 轴旋转(以度为单位)。
DisplayObject
 InheritedrotationZ : Number
指示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 z 轴旋转(以度为单位)。
DisplayObject
 Inheritedscale9Grid : Rectangle
当前有效的缩放网格。
DisplayObject
 InheritedscaleX : Number
指示从注册点开始应用的对象的水平缩放比例(百分比)。
DisplayObject
 InheritedscaleY : Number
指示从对象注册点开始应用的对象的垂直缩放比例(百分比)。
DisplayObject
 InheritedscaleZ : Number
指示从对象的注册点开始应用的对象的深度缩放比例(百分比)。
DisplayObject
 InheritedscrollRect : Rectangle
显示对象的滚动矩形范围。
DisplayObject
  specifiedWidth : Number
[只读 (read-only)] 使用 TextBlock.createTextLine() 方法创建行时为该方法指定的宽度。
TextLine
 Inheritedstage : Stage
[只读 (read-only)] 显示对象的舞台。
DisplayObject
 InheritedtabChildren : Boolean
确定对象的子项是否支持 Tab 键。
DisplayObjectContainer
 InheritedtabEnabled : Boolean
指定此对象是否遵循 Tab 键顺序。
InteractiveObject
 InheritedtabIndex : int
指定 SWF 文件中的对象按 Tab 键顺序排列。
InteractiveObject
  textBlock : TextBlock
[只读 (read-only)] 包含此文本行的 TextBlock;如果该行的 validity 为 TextLineValidity.STATIC,则为 null。
TextLine
  textBlockBeginIndex : int
[只读 (read-only)] 文本块原始文本中行的第一个字符的索引。
TextLine
  textHeight : Number
[只读 (read-only)] 文本行的逻辑高度,即 ascent + descent。
TextLine
 InheritedtextSnapshot : TextSnapshot
[只读 (read-only)] 返回此 DisplayObjectContainer 实例的 TextSnapshot 对象。
DisplayObjectContainer
  textWidth : Number
[只读 (read-only)] 文本行的逻辑宽度,即文本引擎用于布置行的宽度。
TextLine
 Inheritedtransform : Transform
一个对象,具有与显示对象的矩阵、颜色转换和像素范围有关的属性。
DisplayObject
  unjustifiedTextWidth : Number
[只读 (read-only)] 行未对齐时的宽度。
TextLine
  userData : *
为作者提供了一种将任意数据与文本行相关联的途径。
TextLine
  validity : String
指定文本行的当前有效性。
TextLine
 Inheritedvisible : Boolean
显示对象是否可见。
DisplayObject
 Inheritedwidth : Number
指示显示对象的宽度,以像素为单位。
DisplayObject
 Inheritedx : Number
指示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 x 坐标。
DisplayObject
 Inheritedy : Number
指示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 y 坐标。
DisplayObject
 Inheritedz : Number
指示 DisplayObject 实例相对于 3D 父容器沿 z 轴的 z 坐标位置。
DisplayObject
公共方法
 方法定义方
 Inherited
将一个 DisplayObject 子实例添加到该 DisplayObjectContainer 实例中。
DisplayObjectContainer
 Inherited
将一个 DisplayObject 子实例添加到该 DisplayObjectContainer 实例中。
DisplayObjectContainer
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
 Inherited
指示安全限制是否会导致出现以下情况:在列表中忽略了使用指定 point 点调用 DisplayObjectContainer.getObjectsUnderPoint() 方法时返回的所有显示对象。
DisplayObjectContainer
 Inherited
确定指定显示对象是 DisplayObjectContainer 实例的子项还是该实例本身。
DisplayObjectContainer
 Inherited
将事件调度到事件流中。
EventDispatcher
  
将 TextLine 的基础内容转储为 XML 字符串。
TextLine
  
释放行的原子数据以便进行垃圾回收。
TextLine
  
获取指定索引处原子的双向级别。
TextLine
  
获取指定索引处与文本行相关的原子的范围。
TextLine
  
获取指定索引处沿基线测量的原子中心。
TextLine
  
获取指定索引处原子的图形;如果该原子是一个字符,则为 null。
TextLine
  
返回包含由 charIndex 参数指定的字符的原子的索引;如果该字符不构成行中的任何原子,则返回 -1。
TextLine
  
返回由 x 和 y 参数指定的点处的原子的索引;如果该点处没有原子,则返回 -1。
TextLine
  
获取指定索引处原子的文本块开始索引。
TextLine
  
获取指定索引处原子的文本块结束索引。
TextLine
  
获取指定索引处原子的旋转。
TextLine
  
指示文字边界是否在指定索引处原子的左侧出现。
TextLine
  
获取与 TextBlock.baselineZero 相关的指定基线的位置。
TextLine
 Inherited
getBounds(targetCoordinateSpace:DisplayObject):Rectangle
返回一个矩形,该矩形定义相对于 targetCoordinateSpace 对象坐标系的显示对象区域。
DisplayObject
 Inherited
返回位于指定索引处的子显示对象实例。
DisplayObjectContainer
 Inherited
返回具有指定名称的子显示对象。
DisplayObjectContainer
 Inherited
返回 DisplayObject 的 child 实例的索引位置。
DisplayObjectContainer
  
返回行上其 mirror 属性与 mirror 参数指定的属性相匹配的第一个 TextLineMirrorRegion;如果没有匹配项,则为 null。
TextLine
 Inherited
返回对象的数组,这些对象位于指定点下,并且是该 DisplayObjectContainer 实例的子项(或孙子项,依此类推)。
DisplayObjectContainer
 Inherited
getRect(targetCoordinateSpace:DisplayObject):Rectangle
返回一个矩形,该矩形根据 targetCoordinateSpace 参数定义的坐标系定义显示对象的边界,但不包括形状上的任何笔触。
DisplayObject
 Inherited
将 point 对象从舞台(全局)坐标转换为显示对象的(本地)坐标。
DisplayObject
 Inherited
将二维点从舞台(全局)坐标转换为三维显示对象的(本地)坐标。
DisplayObject
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
计算显示对象,以确定它是否与 obj 显示对象重叠或相交。
DisplayObject
 Inherited
hitTestPoint(x:Number, y:Number, shapeFlag:Boolean = false):Boolean
计算显示对象,以确定它是否与 x 和 y 参数指定的点重叠或相交。
DisplayObject
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
将三维显示对象的(本地)坐标的三维点转换为舞台(全局)坐标中的二维点。
DisplayObject
 Inherited
将 point 对象从显示对象的(本地)坐标转换为舞台(全局)坐标。
DisplayObject
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
从 DisplayObjectContainer 实例的子列表中删除指定的 child DisplayObject 实例。
DisplayObjectContainer
 Inherited
从 DisplayObjectContainer 的子列表中指定的 index 位置删除子 DisplayObject。
DisplayObjectContainer
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
更改现有子项在显示对象容器中的位置。
DisplayObjectContainer
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
交换两个指定子对象的 Z 轴顺序(从前到后顺序)。
DisplayObjectContainer
 Inherited
swapChildrenAt(index1:int, index2:int):void
在子级列表中两个指定的索引位置,交换子对象的 Z 轴顺序(前后顺序)。
DisplayObjectContainer
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
 Inherited将显示对象添加到显示列表中时调度。DisplayObject
 Inherited在将显示对象直接添加到舞台显示列表或将包含显示对象的子树添加至舞台显示列表中时调度。DisplayObject
 Inherited当用户从文本上下文菜单中选择“清除”(或“删除”)时调度。InteractiveObject
 Inherited用户在同一 InteractiveObject 上按下并释放用户指针设备的主按钮时调度。InteractiveObject
 Inherited当用户在 AIR 应用程序中选择与此交互式对象相关联的上下文菜单时调度。InteractiveObject
 Inherited当用户激活特定于平台的复制操作的快捷键组合或从文本上下文菜单中选择“复制”时调度。InteractiveObject
 Inherited当用户激活特定于平台的剪切操作的快捷键组合或从文本上下文菜单中选择“剪切”时调度。InteractiveObject
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
 Inherited如果 InteractiveObject 的 doubleClickEnabled 标志设置为 true,当用户在该对象上快速连续按下两次并释放指针设备的主按钮时调度。InteractiveObject
 Inherited[播放事件] 播放头进入新帧时调度。DisplayObject
 Inherited[广播事件] 播放头退出当前帧时调度。DisplayObject
 Inherited显示对象获得焦点后调度。InteractiveObject
 Inherited显示对象失去焦点后调度。InteractiveObject
 Inherited[广播事件] 在帧显示对象的构造函数运行之后但在帧脚本运行之前调度。DisplayObject
 Inherited用户按下某个键时调度。InteractiveObject
 Inherited用户尝试使用键盘导航更改焦点时调度。InteractiveObject
 Inherited用户释放某个键时调度。InteractiveObject
 Inherited当用户在同一 InteractiveObject 上按下并释放用户指针设备的中间按钮时调度。InteractiveObject
 Inherited当用户在 InteractiveObject 实例上按下指针设备的中间按钮时调度。InteractiveObject
 Inherited当用户在 InteractiveObject 实例上释放指针设备按钮时调度。InteractiveObject
 Inherited当用户在 InteractiveObject 实例上按下指针设备按钮时调度。InteractiveObject
 Inherited用户尝试使用指针设备更改焦点时调度。InteractiveObject
 Inherited用户移动 InteractiveObject 上的指针设备时调度。InteractiveObject
 Inherited用户将指针设备从 InteractiveObject 实例上移开时调度。InteractiveObject
 Inherited用户将指针设备移动到 InteractiveObject 实例上时调度。InteractiveObject
 Inherited当用户在 InteractiveObject 实例上释放指针设备按钮时调度。InteractiveObject
 Inherited当鼠标滚轮滚动到 InteractiveObject 实例上时调度。InteractiveObject
 Inherited当用户释放拖动动作时由拖动启动器 InteractiveObject 调度。InteractiveObject
 Inherited在将拖动对象放置到目标上且已通过对 DragManager.acceptDragDrop() 的调用接受该放置操作时,由目标 InteractiveObject 调度。InteractiveObject
 Inherited当拖动动作进入其边界时由 InteractiveObject 调度。InteractiveObject
 Inherited当拖动动作离开其边界时由 InteractiveObject 调度。InteractiveObject
 Inherited当拖动动作保持在其边界内时,由 InteractiveObject 持续调度。InteractiveObject
 Inherited在拖动操作开始时由在 DragManager.doDrag() 调用中指定为拖动启动器的 InteractiveObject 调度。InteractiveObject
 Inherited在拖动操作期间由在 DragManager.doDrag() 调用中指定为拖动启动器的 InteractiveObject 调度。InteractiveObject
 Inherited当用户激活特定于平台的粘贴操作的快捷键组合或从文本上下文菜单中选择“粘贴”时调度。InteractiveObject
 Inherited将要从显示列表中删除显示对象时调度。DisplayObject
 Inherited在从显示列表中直接删除显示对象或删除包含显示对象的子树时调度。DisplayObject
 Inherited[广播事件] 将要更新和呈现显示列表时调度。DisplayObject
 Inherited当用户在同一 InteractiveObject 上按下并释放用户指针设备的右按钮时调度。InteractiveObject
 Inherited当用户在 InteractiveObject 实例上按下指针设备按钮时调度。InteractiveObject
 Inherited当用户在 InteractiveObject 实例上释放指针设备按钮时调度。InteractiveObject
 Inherited用户将指针设备从 InteractiveObject 实例上移开时调度。InteractiveObject
 Inherited用户将指针设备移动到 InteractiveObject 实例上时调度。InteractiveObject
 Inherited当用户激活特定于平台的全选操作的快捷键组合或从文本上下文菜单中选择“全选”时调度。InteractiveObject
 Inherited对象的 tabChildren 标志值发生更改时调度。InteractiveObject
 Inherited对象的 tabEnabled 标志发生更改时调度。InteractiveObject
 Inherited对象的 tabIndex 属性值发生更改时调度。InteractiveObject
公共常量
 常量定义方
  MAX_LINE_WIDTH : int = 1000000
[静态] 文本行的最大请求宽度(以像素为单位)。
TextLine
属性详细信息
ascent属性
ascent:Number  [只读 (read-only)]

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

指定从基线到行中最高字符顶部的像素数。对于仅包含图形元素的 TextLine,将 ascent 设置为 0。



实现
    public function get ascent():Number
atomCount属性 
atomCount:int  [只读 (read-only)]

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

行中的原子数,即不可分割的元素数,其中包括空格和图形元素。

如果原子数据尚不存在,则获取此属性可使播放器创建原子数据。



实现
    public function get atomCount():int

引发
IllegalOperationError — 行的 validityTextLineValidity.STATIC

另请参见

descent属性 
descent:Number  [只读 (read-only)]

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

指定从基线到行中最低字符底部的像素数。对于仅包含图形元素的 TextLine,将 descent 设置为 0。



实现
    public function get descent():Number
hasGraphicElement属性 
hasGraphicElement:Boolean  [只读 (read-only)]

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

指示文本行是否包含任何图形元素。



实现
    public function get hasGraphicElement():Boolean

另请参见

mirrorRegions属性 
mirrorRegions:Vector.<TextLineMirrorRegion>  [只读 (read-only)]

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

包含与行相关联的 TextLineMirrorRegion 对象的矢量;如果没有这样的对象,则为 null



实现
    public function get mirrorRegions():Vector.<TextLineMirrorRegion>

另请参见

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

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

TextBlock 中的下一个 TextLine;如果当前行是块中的最后一行或行的 validity 为 TextLineValidity.STATIC,则为 null



实现
    public function get nextLine():TextLine

另请参见

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

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

TextBlock 中的上一个 TextLine;如果行是块中的第一行或行的 validity 为 TextLineValidity.STATIC,则为 null



实现
    public function get previousLine():TextLine

另请参见

rawTextLength属性 
rawTextLength:int  [只读 (read-only)]

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

文本块中构成行的原始文本的长度,包括表示图形元素的 U+FDEF 字符以及构成该行的一部分但不会显示的任何尾随空格。



实现
    public function get rawTextLength():int

另请参见

specifiedWidth属性 
specifiedWidth:Number  [只读 (read-only)]

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

使用 TextBlock.createTextLine() 方法创建行时为该方法指定的宽度。在确定所做更改是否需要重新换行时将使用该值。



实现
    public function get specifiedWidth():Number

另请参见

textBlock属性 
textBlock:TextBlock  [只读 (read-only)]

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

包含此文本行的 TextBlock;如果该行的 validity 为 TextLineValidity.STATIC,则为 null。



实现
    public function get textBlock():TextBlock

另请参见

textBlockBeginIndex属性 
textBlockBeginIndex:int  [只读 (read-only)]

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

文本块原始文本中行的第一个字符的索引。



实现
    public function get textBlockBeginIndex():int

另请参见

textHeight属性 
textHeight:Number  [只读 (read-only)]

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

文本行的逻辑高度,即 ascent + descent。若要获取油墨高度,请获取继承的 height 属性。

此值是基于限制行的基线间的距离计算的,无论基线是表意顶部/底部基线还是上缘/下缘基线,具体取决于 TextBlock.baselineZero 是否为 ideo。计算这些基线时不考虑图形元素。



实现
    public function get textHeight():Number

另请参见

textWidth属性 
textWidth:Number  [只读 (read-only)]

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

文本行的逻辑宽度,即文本引擎用于布置行的宽度。访问继承的 width 属性以获取所有绘制的像素的边框的实际宽度。



实现
    public function get textWidth():Number

另请参见


示例
本示例将一个文本行用标准形式和斜体形式各显示一次,并在每种情况下跟踪 specifiedWidthtextWidthwidth 属性的值。跟踪输出结果为:
  • specifiedWidth is: 500
  • textWidth is: 268.9921875
  • width is: 269
  • specifiedWidth is: 500
  • textWidth is: 267.52734375
  • width is: 267.55
package {
import flash.display.Sprite;
import flash.text.engine.TextBlock;
import flash.text.engine.TextElement;
import flash.text.engine.TextLine;
import flash.text.engine.FontDescription;
import flash.text.engine.ElementFormat;
import flash.text.engine.FontPosture;

    public class TextLine_textWidthExample extends Sprite {
        
        public function TextLine_textWidthExample() {
            
            var str:String = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, ";
            var yPos:Number = 20;
            var fontDescription:FontDescription = new FontDescription();
            var textBlock:TextBlock = new TextBlock();
            fontDescription.fontPosture = FontPosture.NORMAL;
            var format:ElementFormat = new ElementFormat(fontDescription, 12);
            var textElement:TextElement = new TextElement(str, format);
            textBlock.content = textElement;
            createLine(textBlock, yPos);
            var fontDescriptionItalic = fontDescription.clone();
            fontDescriptionItalic.fontPosture = FontPosture.ITALIC;
            var formatItalic = new ElementFormat(fontDescriptionItalic, 12);
            textElement = new TextElement(str, formatItalic);
            textBlock.content = textElement;
            createLine(textBlock, yPos + 20);
        }

        private function createLine(textBlock:TextBlock, yPos:Number):void {
            var textLine:TextLine = textBlock.createTextLine (null, 500);
            trace("specifiedWidth is: " + textLine.specifiedWidth);
            trace("textWidth is: " + textLine.textWidth);
            trace("width is: " + textLine.width);
            addChild(textLine);
            textLine.x = 15;
            textLine.y = yPos;     
        }
    }
}
unjustifiedTextWidth属性 
unjustifiedTextWidth:Number  [只读 (read-only)]

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

行未对齐时的宽度。对于未对齐的文本,此值与 textWidth 相同。对于对齐的文本,此值为未对齐时具有的长度,并且 textWidth 表示实际的行宽度。例如,当将以下字符串对齐并按照 500 的宽度提交给 TextBlock.createTextLine() 时,该字符串的实际宽度为 500,而未对齐的宽度为 268.9921875。



实现
    public function get unjustifiedTextWidth():Number

另请参见


示例
当将以下示例中的字符串对齐时并按照 500 的宽度提交给 TextBlock.createTextLine() 时,该字符串的实际宽度将为 500,而其未对齐的宽度为 268.9921875。
import flash.display.Sprite;
  import flash.text.engine.TextBlock;
  import flash.text.engine.TextElement;
  import flash.text.engine.TextLine;
  import flash.text.engine.FontDescription;
  import flash.text.engine.ElementFormat;
  import flash.text.engine.SpaceJustifier;
  import flash.text.engine.LineJustification;

  var str:String = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, ";
  var fontDescription:FontDescription = new FontDescription();
  var textBlock:TextBlock = new TextBlock();
  var format:ElementFormat = new ElementFormat(fontDescription, 12);
  var textElement:TextElement = new TextElement(str, format);
  textBlock.content = textElement;
  var spaceJustifier:SpaceJustifier = new SpaceJustifier("en", LineJustification.ALL_INCLUDING_LAST);
  textBlock.textJustifier = spaceJustifier;
  var textLine:TextLine = textBlock.createTextLine(null, 500);
  textLine.y = 20;

  addChild(textLine);
  trace("textWidth value is: " + textLine.textWidth);  // 500.00244140625
  trace("unjustifiedTextWidth is: " + textLine.unjustifiedTextWidth); // 268.9921875
userData属性 
public var userData:*

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

为作者提供了一种将任意数据与文本行相关联的途径。

validity属性 
validity:String  [读写]

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

指定文本行的当前有效性。此属性的系统值包括在 TextLineValidity 类的成员中。用于设置此属性的规则如下:

如果将 validity 设置为非 TextLineValidity 成员的任何字符串,则会将行视为 USER_INVALID。USER_INVALID 是一个抽象概念,在此处用于表示任何这样的值。

在修改 TextBlock 的内容时,播放器代码会将受影响的文本行、前一行和所有后续行标记为 INVALID。如果所做更改允许前一行吸收最初位于第一个受影响行上的部分内容,则必须将前一行标记为 INVALID。

新断开的行始终为 VALID。播放器可能会将后面的行从 VALID 更改为 POSSIBLY_INVALID 或 INVALID。如果换行符相匹配,则播放器代码可能会将 POSSIBLY_INVALID 行更改为 VALID,否则,将 POSSIBLY_INVALID 行更改为 INVALID。

用户代码可以将 VALID 行标记为 INVALID 或 USER_INVALID,并可以将 USER_INVALID 行标记为 VALID。用户代码不能将行标记为 POSSIBLY_INVALID。

用户代码可以将任何行标记为 STATIC。这样做会使 block 成员变为 null。用户代码还会清除行的原子数据并防止重新创建这些数据。如果 STATIC 文本行中的任何图形元素是从文本块(原始派生 STATIC 文本行的文本块)中换行的新文本行的一部分,则将删除这些元素并为其重定父级。



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

引发
ArgumentError — 如果当前值为 TextLineValidity.STATIC
 
ArgumentError — 如果当前值为 TextLineValidity.INVALID 并且新值为 TextValidity.STATIC 之外的任何值。
 
ArgumentError — 如果当前值为 TextLineValidity.POSSIBLY_INVALID 并且新值为 TextLineValidity.VALID
 
ArgumentError — 如果新值为 TextLineValidity.POSSIBLY_INVALID .

另请参见

方法详细信息
dump()方法
public function dump():String

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

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

有关输出的说明,请参阅 TextBlock.dump() 方法。

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

返回
String

另请参见

flushAtomData()方法 
public function flushAtomData():void

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

释放行的原子数据以便进行垃圾回收。术语“原子”是指组成文本行的不可分割的实体。当您访问 atomCount 属性或调用用于检索有关原子的信息的方法之一时,文本引擎将生成原子数据。

另请参见

getAtomBidiLevel()方法 
public function getAtomBidiLevel(atomIndex:int):int

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

获取指定索引处原子的双向级别。由 TextBlock.bidiLevel 和构成行的字符的 Unicode 双向属性共同确定。

例如,如果您使用一些希伯来语文字来作为文本块的开头,并将 TextBlock.bidiLevel 设置为 1,则将确立从右到左的默认文本顺序。如果您在文本中引用了一段英文(从左到右),则这些英文的 AtomBidiLevel 为 2。如果英文文字中包含少量阿拉伯文字(从右到左),则这些阿拉伯文字的 AtomBidiLevel 将为 3。如果阿拉伯文字中存在一个数字(从左到右),则该数字的 AtomBidiLevel 设置为 4。无论原子在哪一行中结束,希伯来语原子为 AtomBidiLevel 1,英语原子为 AtomBidiLevel 2,阿拉伯语原子为 AtomBidiLevel 3,数字原子为 AtomBidiLevel 4。

如果原子数据尚不存在,则调用此方法可使播放器创建原子数据。

参数

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

返回
intatomIndex 处的原子的双向级别。

引发
RangeError — 指定的原子索引超出范围。
 
IllegalOperationError — 行的 validityTextLineValidity.STATIC

另请参见

getAtomBounds()方法 
public function getAtomBounds(atomIndex:int):Rectangle

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

获取指定索引处与文本行相关的原子的范围。指定的原子的范围由其在行中的水平位置 (x)、垂直位置 (y)、宽度 (w) 和高度 (h) 构成。所有值均以像素为单位。

如果原子数据尚不存在,则调用此方法可使播放器创建原子数据。

参数

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

返回
RectangleatomIndex 处原子的范围。

引发
RangeError — 指定的原子索引超出范围。
 
IllegalOperationError — 行的 validityTextLineValidity.STATIC

另请参见

getAtomCenter()方法 
public function getAtomCenter(atomIndex:int):Number

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

获取指定索引处沿基线测量的原子中心。

如果原子数据尚不存在,则播放器可调用此方法创建原子数据。

参数

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

返回
NumberatomIndex 处原子的中心。

引发
RangeError — 指定的原子索引超出范围。
 
IllegalOperationError — 行的 validityTextLineValidity.STATIC

另请参见

getAtomGraphic()方法 
public function getAtomGraphic(atomIndex:int):DisplayObject

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

获取指定索引处原子的图形;如果该原子是一个字符,则为 null

如果原子数据尚不存在,则调用此方法可使播放器创建原子数据。

参数

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

返回
DisplayObjectatomIndex 处原子的图形。

引发
RangeError — 指定的原子索引超出范围。
 
IllegalOperationError — 行的 validityTextLineValidity.STATIC

另请参见

getAtomIndexAtCharIndex()方法 
public function getAtomIndexAtCharIndex(charIndex:int):int

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

返回包含由 charIndex 参数指定的字符的原子的索引;如果该字符不构成行中的任何原子,则返回 -1。charIndex 相对于包含该行的文本块的全部内容。

如果原子数据尚不存在,则调用此方法可使播放器创建原子数据。

参数

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

返回
int — 包含 charIndex 处字符的原子的索引。如果该字符不构成行中的任何原子,则返回 -1。

引发
IllegalOperationError — 行的 validityTextLineValidity.STATIC

另请参见

getAtomIndexAtPoint()方法 
public function getAtomIndexAtPoint(stageX:Number, stageY:Number):int

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

返回由 xy 参数指定的点处的原子的索引;如果该点处没有原子,则返回 -1。

如果原子数据尚不存在,则调用此方法可使播放器创建原子数据。

此方法采用全局坐标,以便您可以轻松地将其与 MouseEvent.stageXMouseEvent.stageY 属性一起使用。

参数

stageX:Number — 要测试的点的全局 x 坐标。
 
stageY:Number — 要测试的点的全局 y 坐标。

返回
int — 点下方原子的索引。如果点不在任何原子上方,则返回 -1。

引发
IllegalOperationError — 行的 validityTextLineValidity.STATIC

另请参见

getAtomTextBlockBeginIndex()方法 
public function getAtomTextBlockBeginIndex(atomIndex:int):int

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

获取指定索引处原子的文本块开始索引。

如果原子数据尚不存在,则调用此方法可使播放器创建原子数据。

参数

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

返回
intatomIndex 处原子的文本块开始索引。

引发
RangeError — 指定的原子索引超出范围。
 
IllegalOperationError — 行的 validityTextLineValidity.STATIC

另请参见

getAtomTextBlockEndIndex()方法 
public function getAtomTextBlockEndIndex(atomIndex:int):int

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

获取指定索引处原子的文本块结束索引。

如果原子数据尚不存在,则调用此方法可使播放器创建原子数据。

参数

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

返回
intatomIndex 处原子的文本块结束索引。

引发
RangeError — 指定的原子索引超出范围。
 
IllegalOperationError — 行的 validityTextLineValidity.STATIC

另请参见

getAtomTextRotation()方法 
public function getAtomTextRotation(atomIndex:int):String

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

获取指定索引处原子的旋转。对此属性使用 TextRotation 常量。原子的旋转是元素和行的累积旋转。其主要用途是在与 TextLine 进行交互时设置尖号(光标)的方向。

如果原子数据尚不存在,则调用此方法可使播放器创建原子数据。

参数

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

返回
StringatomIndex 处原子的旋转。

引发
RangeError — 指定的原子索引超出范围。
 
IllegalOperationError — 行的 validityTextLineValidity.STATIC

另请参见

getAtomWordBoundaryOnLeft()方法 
public function getAtomWordBoundaryOnLeft(atomIndex:int):Boolean

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

指示文字边界是否在指定索引处原子的左侧出现。文字边界由构成行的字符的 Unicode 属性决定。

如果原子数据尚不存在,则调用此方法可使播放器创建原子数据。

参数

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

返回
Boolean — 一个布尔值,指示文字边界是否在 atomIndex 处原子的左侧出现。

引发
RangeError — 指定的原子索引超出范围。
 
IllegalOperationError — 行的 validityTextLineValidity.STATIC

另请参见

getBaselinePosition()方法 
public function getBaselinePosition(baseline:String):Number

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

获取与 TextBlock.baselineZero 相关的指定基线的位置。

参数

baseline:String — 要检索其位置的基线。使用 TextBaseline 值。

返回
Number — 与 TextBlock.baselineZero 相关的指定基线的位置。

引发
ArgumentError — 如果指定的 baseline 不是 TextBaseline 的成员。

另请参见

getMirrorRegion()方法 
public function getMirrorRegion(mirror:EventDispatcher):TextLineMirrorRegion

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

返回行上其 mirror 属性与 mirror 参数指定的属性相匹配的第一个 TextLineMirrorRegion;如果没有匹配项,则为 null

即使是一个 TextElement 也可以在一个或多个文本行上生成多个 TextLineMirrorRegion 对象,具体取决于双向级别和换行设置。nextRegionpreviousRegion 属性链接从一个文本元素生成的所有镜像区域。

参数

mirror:EventDispatcher — 要搜索的 EventDispatcher 镜像对象。

返回
TextLineMirrorRegion — 行上其 mirror 属性与指定值相匹配的第一个 TextLineMirrorRegion;如果没有匹配项,则为 null

另请参见

常量详细信息
MAX_LINE_WIDTH常量
public static const MAX_LINE_WIDTH:int = 1000000

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

文本行的最大请求宽度(以像素为单位)。如果您没有指定值,则 TextBlock.createTextLine() 方法使用此常量作为 width 参数的默认值。

另请参见

示例 如何使用示例
TextLineExample.as

该示例通过使用 getAtomBounds() 为每个原子加边框,显示了各文本行并遍历了文本块中的原子。
  1. 将 NumericStepper 组件添加到库中。
  2. 将该代码作为 TextLineExample.as 另存到 FLA 文件所在的同一目录中。
  3. 将 FLA 的“属性”窗口中的“类”设置为“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);
        }
    }    
}