flash.textTextExtent TextExtent 类包含有关文本字段中某些文本的范围的信息。Object TextExtent 类包含有关某些文本在文本字段中的范围的信息。此类的对象由 TextFormat.getTextExtent 方法返回。 TextExtentwidthNumberheightNumbertextFieldWidthNumbertextFieldHeightNumberascentNumberdescentNumberascentNumberdescentNumberheightNumbertextFieldHeightNumbertextFieldWidthNumberwidthNumberCSMSettings CSMSettings 类所包含的一些属性可与 TextRenderer.setAdvancedAntiAliasingTable() 方法配合使用以提供连续笔触调制 (CSM)。Object CSMSettings 类所包含的一些属性可与 TextRenderer.setAdvancedAntiAliasingTable() 方法配合使用以提供连续笔触调制 (CSM)。CSM 是笔触粗细和边缘清晰度的连续调制。 TextRenderer.setAdvancedAntiAliasingTable()CSMSettings 创建一个新的 CSMSettings 对象,它存储自定义消除锯齿设置的笔触值。fontSizeNumber设置所应用的大小,以像素为单位。 insideCutoffNumber内侧截止值,高于该值时密度设置为最大密度值(如 255)。 outsideCutoffNumber外侧截止值,低于该值时密度设置为 0。 创建一个新的 CSMSettings 对象,它存储自定义消除锯齿设置的笔触值。 fontSize 设置所应用的大小,以像素为单位。Number 设置所应用的大小,以像素为单位。

传递给 setAdvancedAntiAliasingTable() 方法的 advancedAntiAliasingTable 数组可以包含指定不同字体大小的 CSM 设置的多个条目。使用此属性,您可以指定其他设置所应用的字体大小。

TextRenderer.setAdvancedAntiAliasingTable()
insideCutoff 内侧截止值,高于该值时密度设置为最大密度值(如 255)。Number 内侧截止值,高于该值时密度设置为最大密度值(如 255)。 TextRenderer.setAdvancedAntiAliasingTable()outsideCutoff 外侧截止值,低于该值时密度设置为 0。Number 外侧截止值,低于该值时密度设置为 0。 TextRenderer.setAdvancedAntiAliasingTable()
TextColorType TextColorType 类为 flash.text.TextRenderer 类提供颜色值。Object TextColorType 类为 flash.text.TextRenderer 类提供颜色值。 flash.text.TextRendererDARK_COLOR 用于 setAdvancedAntiAliasingTable() 方法中的 colorType 参数。Bob Pappas darkString 用于 setAdvancedAntiAliasingTable() 方法中的 colorType 参数。使用语法 TextColorType.DARK_COLORflash.text.TextRenderer.setAdvancedAntiAliasingTable()LIGHT_COLOR 用于 setAdvancedAntiAliasingTable() 方法中的 colorType 参数。lightString 用于 setAdvancedAntiAliasingTable() 方法中的 colorType 参数。使用语法 TextColorType.LIGHT_COLORflash.text.TextRenderer.setAdvancedAntiAliasingTable()GridFitType GridFitType 类定义 TextField 类中的网格固定值。Object GridFitType 类定义 TextField 类中的网格固定值。 flash.text.TextFieldNONE 不设置网格固定。Bob Pappas noneString 不设置网格固定。不强制根据像素网格调整字型中的水平线和垂直线。此常数用于设置 TextField 类的 gridFitType 属性。此设置通常适合动画或大号字。使用语法 GridFitType.NONEflash.text.TextField.gridFitTypePIXEL 使粗水平线和垂直线适合像素网格。Bob Pappas pixelString 使粗水平线和垂直线适合像素网格。此常数用于设置 TextField 类的 gridFitType 属性。此设置只适用于左对齐文本字段,用作静态文本中的 GridFitType.SUBPIXEL 常数。此设置通常能为左对齐文本提供最佳可读性。使用语法 GridFitType.PIXELflash.text.TextField.gridFitTypeSUBPIXEL 使粗水平线和垂直线适合 LCD 显示器中的子像素网格。Bob Pappas subpixelString 使粗水平线和垂直线适合 LCD 显示器中的子像素网格。(红色、绿色和蓝色是 LCD 屏幕上的实际像素。)此设置通常适合右对齐或居中对齐的动态文本,有时,为了在动画与文本品质之间达到一种平衡,也可使用此设置。此常数用于设置 TextField 类的 gridFitType 属性。使用语法 GridFitType.SUBPIXELflash.text.TextField.gridFitTypeStaticText 此类表示显示列表中的 StaticText 对象。flash.display:DisplayObject 此类表示显示列表中的 StaticText 对象。无法使用 ActionScript 创建 StaticText 对象。只有创作工具可以创建 StaticText 对象。尝试创建新的 StaticText 对象会生成 ArgumentError

要创建对 ActionScript 3.0 中的现有静态文本字段的引用,可以遍历显示列表中的项。例如,以下片段检查显示列表中是否包含静态文本字段并将该字段分配给变量:

var i:uint; for (i = 0; i < this.numChildren; i++) { var displayitem:DisplayObject = this.getChildAt(i); if (displayitem instanceof StaticText) { trace("a static text field is item " + i + " on the display list"); var myFieldLabel:StaticText = StaticText(displayitem); trace("and contains the text: " + myFieldLabel.text); } }
text 返回静态文本字段的当前文本。String 返回静态文本字段的当前文本。创作工具可能导出多个包含完整文本的文本字段对象。例如,对于垂直文本,创作工具将为每个字符创建一个文本字段。
TextField TextField 类用于创建显示对象以显示和输入文本。TextField 类用于创建显示对象以显示和输入文本。 flash.display:InteractiveObject TextField 类用于创建显示对象以显示和输入文本。可以使用 TextField 类执行低级文本呈现。但是,在 Flex 中,您通常使用 Label、Text、TextArea 和 TextInput 控件来处理文本。 可以在属性检查器中为文本字段指定实例名称,并且可以在 ActionScript 中使用 TextField 类的方法和属性对文本字段进行操作。TextField 实例名称显示在影片浏览器中以及“动作”面板的“插入目标路径”对话框中。

要动态创建文本字段,请使用 TextField() 构造函数。

TextField 类的方法允许您设置、选择并操作在创作过程中或运行时创建的动态或输入文本字段中的文本。

ActionScript 提供了多种在运行时设置文本格式的方法。TextFormat 类允许您设置 TextField 对象的字符和段落格式。您可以使用 TextField.styleSheet 属性和 StyleSheet 类来对文本字段应用层叠样式表 (CSS) 样式。您可以使用 CSS 设置内置 HTML 标签的样式、定义新的格式设置标签或应用样式。可以将 HTML 格式的文本(该文本可以选择使用 CSS 样式)直接分配给文本字段。分配给文本字段的 HTML 文本可以包含嵌入的媒体(影片剪辑、SWF 文件、GIF 文件、PNG 文件和 JPEG 文件)。文本在嵌入的媒体旁自动换行,这与 Web 浏览器的文本在 HTML 文档中嵌入的媒体旁换行非常类似。

Flash Player 还支持部分 HTML 标签,可以使用这些 HTML 标签设置文本格式。要查看受支持 HTML 标签的列表,请参阅对 htmlText 属性的描述。

下例使用 TextFieldExample 类来显示文本消息。可通过以下步骤完成该操作:
  1. 创建 TextField 类型的 label 属性。
  2. 类构造函数调用 configureLabel() 函数。
  3. configureLabel() 方法首先创建新的 TextField 对象并将其赋给 label 属性,然后设置其参数如下:
    • 左对齐文本字段。
    • 启用背景填充。
    • 启用边框。
  4. configureLabel() 方法创建 format 变量并将该变量赋给新的 TextFormat 实例,同时如下设置其参数:
    • 字体类型 = 宋体
    • 字体颜色 = 纯红色
    • 字体大小 = 10
    • 字体下划线 = true
  5. label 文本字段的 defaultTextFormat 属性设置为 formatlabel 实例将添加到显示列表中,此显示列表最初在舞台上显示不包含文本的文本字段。
  6. 构造函数将 label 文本字段的文本设置为 "Hello world and welcome to the show." 采用方式是调用 setLabel() 方法。
package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; public class TextFieldExample extends Sprite { private var label:TextField; private var labelText:String = "Hello world and welcome to the show."; public function TextFieldExample() { configureLabel(); setLabel(labelText); } public function setLabel(str:String):void { label.text = str; } private function configureLabel():void { label = new TextField(); label.autoSize = TextFieldAutoSize.LEFT; label.background = true; label.border = true; var format:TextFormat = new TextFormat(); format.font = "Verdana"; format.color = 0xFF0000; format.size = 10; format.underline = true; label.defaultTextFormat = format; addChild(label); } } }
flash.text.TextFormatflash.text.StyleSheethtmlTexttextInteractionModeChange 当用户更改文本字段交互模式时,Flash Player 会调度 textInteractionModeChange 事件。flash.events.Event 当用户更改文本字段的交互模式时,Flash Player 调度 textInteractionModeChange 事件。例如,在 Android 上,用户可以使用上下文菜单选项从 NORMAL 模式切换到 SELECTION 模式 textInput 用户输入一个或多个文本字符时,Flash Player 将调度 textInput 事件。flash.events.TextEvent.TEXT_INPUTflash.events.TextEvent 用户输入一个或多个文本字符时,Flash Player 将调度 textInput 事件。各种文本输入法都可以生成此事件,包括使用标准键盘、输入法编辑器 (IME)、语音识别系统以及粘贴不带格式设置或样式信息的纯文本的操作。 以下示例定义两个 TextField 对象:第一个 TextField 对象是一个输入文本字段,第二个 TextField 对象是一个动态文本字段。在第一个文本字段中输入文本字符时,将调度 textInput 事件,调用 textInputHandler() 处理函数,并在第二个文本字段中显示这些字符。在向该输入字段中粘贴一个文本块时,事件处理函数会将整个块复制到另一个字段中。 package { import flash.display.Sprite; import flash.text.*; import flash.events.Event; import flash.events.TextEvent; import flash.events.MouseEvent; public class TextInputExample extends Sprite { private var myTextBox1:TextField = new TextField(); private var myTextBox2:TextField = new TextField(); public function TextInputExample() { myTextBox1.type = TextFieldType.INPUT; myTextBox1.width = 200; myTextBox1.height = 20; myTextBox1.background = true; myTextBox1.border = true; myTextBox2.x=220; addChild(myTextBox1); addChild(myTextBox2); myTextBox1.addEventListener(TextEvent.TEXT_INPUT,textInputHandler); } public function textInputHandler(event:TextEvent):void { myTextBox2.text=event.text; } } } scroll 用户滚动后由 TextField 对象调度。flash.events.Event.SCROLLflash.events.Event 用户滚动 由 TextField 对象调度。 下面的示例定义两个 TextField 对象。第一个 TextField 对象具有两个相关联的事件处理函数。在第一个文本字段中单击鼠标时,将调度 mouseDown 事件,并调用相关联的 mouseDownScroll 处理函数。mouseDownScroll() 处理函数会使该字段滚动。然后调度 scroll 事件,并且相关联的 scrollHandler() 处理函数将更新第二个文本字段以使其显示当前滚动位置。 package { import flash.display.Sprite; import flash.text.*; import flash.events.Event; import flash.events.TextEvent; import flash.events.MouseEvent; public class TextScrollExample extends Sprite { private var myTextBox1:TextField = new TextField(); private var myTextBox2:TextField = new TextField(); private var myText:String = "Hello world and welcome to the show. It's really nice to meet you. Take your coat off and stay a while. OK, show is over. Hope you had fun. You can go home now. Don't forget to tip your waiter. There are mints in the bowl by the door. Thank you. Please come again."; public function TextScrollExample() { myTextBox1.text = myText; myTextBox1.width = 200; myTextBox1.height = 50; myTextBox1.multiline = true; myTextBox1.wordWrap = true; myTextBox1.background = true; myTextBox1.border = true; myTextBox2.x=220; myTextBox2.text="scrolled to line: " + myTextBox1.scrollV; addChild(myTextBox1); addChild(myTextBox2); myTextBox1.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownScroll); myTextBox1.addEventListener(Event.SCROLL, scrollHandler); } public function mouseDownScroll(event:MouseEvent):void { myTextBox1.scrollV++; } public function scrollHandler(event:Event):void { myTextBox2.text="scrolled to line: " + myTextBox1.scrollV; } } } link 当用户单击支持 HTML 的文本字段中的超链接(其中的 URL 以“event:”开头)时调度。flash.events.TextEvent.LINKflash.events.TextEvent 当用户单击支持 HTML 的文本字段中的超链接(其中的 URL 以“event:”开头)时调度。URL 中“event:”后的其余部分将放在 LINK 事件的 text 属性中。

注意:仅在 Flash Player 生成此事件时(在本例中,当用户尝试输入文本时发生此事件)才发生默认行为(向文本字段中添加文本)。无法通过发送 textInput 事件来在文本字段中放置文本。

在下面的示例中,定义了 playMP3() 函数。创建一个名为 list 的 TextField 对象,并向其中填充了 HTML 文本。文本 "Track 1""Track 2" 是文本字段中的链接。在用户单击任一链接时,调用 playMP3() 函数。HTML 标签的 href 属性中跟随在字符串“event:”之后的 MP3 文件名将被传递给 linkHandler() 方法,作为 link 事件对象的 text 属性。 package { import flash.display.Sprite; import flash.errors.IOError; import flash.events.IOErrorEvent; import flash.events.TextEvent; import flash.media.Sound; import flash.media.SoundChannel; import flash.net.URLRequest; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class TextField_event_link extends Sprite { private var myMP3:Sound; public function TextField_event_link() { myMP3 = new Sound(); var list:TextField = new TextField(); list.autoSize = TextFieldAutoSize.LEFT; list.multiline = true; list.htmlText = "<a href=\"event:track1.mp3\">Track 1</a><br>"; list.htmlText += "<a href=\"event:track2.mp3\">Track 2</a><br>"; addEventListener(TextEvent.LINK, linkHandler); addChild(list); } private function playMP3(mp3:String):void { try { myMP3.load(new URLRequest(mp3)); myMP3.play(); } catch(err:Error) { trace(err.message); } myMP3.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); } private function linkHandler(linkEvent:TextEvent):void { playMP3(linkEvent.text); } private function errorHandler(errorEvent:IOErrorEvent):void { trace(errorEvent.text); } } }
change 在修改控件值后调度,这与 textInput 事件不同,后者是在修改值之前调度的。flash.events.Event.CHANGEflash.events.Event 在修改控件值后调度,这与 textInput 事件不同,后者是在修改值之前调度的。与 W3C DOM 事件模型版本的 change 事件(仅在控件失去焦点后调度此事件)不同,每当控件更改时即会调度 ActionScript 3.0 版本的 change 事件。例如,如果用户向文本字段中键入文本,则在每次键击后调度 change 事件。 在下面的示例中,将用户输入的文本(用户输入)立即复制(回显)到另一个具有不同文本格式的文本字段中。

共创建了两个文本字段,一个用于显示用户输入,另一个 (headingTextField) 用于显示用户输入副本。还创建了一个 TextFormat 对象,并将默认的文本格式分配给 headingTextField 文本字段。在更改文本字段的内容时,将调用 changeHandler() 方法,它将 inputTextField 文本字段中的文本分配给 headingTextField 文本字段。(如果为 TextEvent.TEXT_INPUT 事件而不是 Event.CHANGE 事件调用该方法,则仅在用户输入更多文本后才会复制用户输入的内容。)

package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldType; import flash.text.TextFormat; import flash.text.TextFormatAlign; import flash.events.Event; import flash.events.TextEvent; public class TextField_Event_changeExample extends Sprite { private var inputTextField:TextField = new TextField(); private var headingTextField:TextField = new TextField(); private var newFormat:TextFormat = new TextFormat(); public function TextField_Event_changeExample() { headingTextField.x = 10; headingTextField.y = 10; headingTextField.height = 30; headingTextField.width = 400; headingTextField.background = true; headingTextField.backgroundColor = 0xF5F5DC; headingTextField.selectable = false; inputTextField.x = 10; inputTextField.y = 70; inputTextField.height = 20; inputTextField.width = 230; inputTextField.background = true; inputTextField.border = true; inputTextField.maxChars = 40; inputTextField.wordWrap = true; inputTextField.type = TextFieldType.INPUT; inputTextField.addEventListener(Event.CHANGE, changeHandler); newFormat.bold = true; newFormat.size = 18; newFormat.color = 0xFF0000; newFormat.align = TextFormatAlign.CENTER; headingTextField.defaultTextFormat = newFormat; this.addChild(inputTextField); this.addChild(headingTextField); } private function changeHandler(e:Event):void { headingTextField.text = inputTextField.text; } } }
TextField 创建新的 TextField 实例。 创建新的 TextField 实例。在创建 TextField 实例后,调用父 DisplayObjectContainer 对象的 addChild()addChildAt() 方法可将 TextField 实例添加到显示列表中。

文本字段的默认大小是 100 x 100 个像素。

以下示例说明了如何通过将文本字段对象的 type 属性设置为 TextFieldType.INPUT 常量在ActionScript 3.0 中动态地创建输入 TextField 对象。ActionScriptExamples.com 提供的示例。 var theTextField:TextField = new TextField(); theTextField.type = TextFieldType.INPUT; theTextField.border = true; theTextField.x = 10; theTextField.y = 10; theTextField.multiline = true; theTextField.wordWrap = true; addChild(theTextField);
appendText 将 newText 参数指定的字符串追加到文本字段的文本的末尾。newTextString要追加到现有文本末尾的字符串。 将文本追加到 TextField 现有文本的末尾。 newText 参数指定的字符串追加到文本字段的文本的末尾。此方法要比对 text 属性的加法赋值 (+=)(如 someTextField.text += moreText)更有效,对于包含大量内容的文本字段尤其有效。 如果不是周末,下面的示例将显示时间;如果是周末,则显示文本“It's the weekend”。它还计算到某个位置之前的字符数以及文本字段中的行数。

outputText 文本字段被设置为自动适应文本,并使用 autoSize 属性将其调整为左对齐的文本。outputText.text 属性写入第一行内容,并由 appendText() 方法附加其余的内容。(并非必须以 text 属性开头。也可以从一开始就使用 appendText() 方法附加文本。) 第二次设置 text 属性时,将覆盖原始文本。可以使用 += 运算符通过 text 属性附加内容。

if 语句检查日期是否为星期六 (6) 或星期日 (0)。如果不是,toLocaleTimeString() 方法将返回本地时间,它将附加到文本字段内容中。

文本字段的 length 属性用于读取就在调用函数之前的字符数;而属性 numLines 用于计算文本字段中的行数。请注意,在计算行数时将空行计算在内,并在确定长度内容时将空格和换行符 (\n) 计算在内。

package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class TextField_appendTextExample extends Sprite { public function TextField_appendTextExample() { var outputText:TextField = new TextField(); var today:Date = new Date(); outputText.x = 10; outputText.y = 10; outputText.background = true; outputText.autoSize = TextFieldAutoSize.LEFT; outputText.text = "WHAT TIME IS IT?" + "\n\n"; if((today.day == 0) || (today.day == 6)) { outputText.appendText("It's the weekend."); outputText.appendText("\n\n"); } else { outputText.appendText("The time is: "); outputText.appendText(today.toLocaleTimeString() + ".\n\n"); } outputText.appendText("Number of characters including line breaks and spaces so far: "); outputText.appendText(outputText.length.toString() + "\n"); outputText.appendText("Number of lines in the outputText: "); outputText.appendText(outputText.numLines.toString()); this.addChild(outputText); } } }
getCharBoundaries 返回一个矩形,该矩形是字符的边框。一个矩形,具有定义字符边框的 xy 最小值和最大值。 flash.geom:RectanglecharIndexint从零开始的字符索引值(例如,第一个位置为 0,第二个位置为 1,依此类推)。 返回一个矩形,该矩形是字符的边框。 返回一个矩形,该矩形是字符的边框。 在下面的示例中,使用 getCharBoundaries() 方法标记(产生聚光灯照射效果)用户选择的字符。

该类定义了 spotlight Shape 对象,该对象用于在每个所选的字符周围绘制一个矩形。当用户单击 myTextField 文本字段时,将调用 clickHandler() 方法。

clickHandler() 方法中,getCharIndexAtPoint() 方法基于鼠标单击的 localXlocalY 坐标来获取所单击的字符的索引,此坐标相对于包含它的 Sprite。如果该点(鼠标单击)不在任何字符上,getCharIndexAtPoint() 方法将返回 -1。由于文本字段可能比文本大,因此,应检查返回的整数 (index) 以确保用户单击了某个字符。getCharBoundaries() 还使用 index 整数来获取用于保存字符边界的 Rectangle 对象。clear() 方法将清除以前显示的所有 spotlight Shape 对象。将使用返回的 frame 矩形的 x 和 y 坐标,在字符位置生成一个字符宽度和高度边界大小的新矩形,字符位置是相对于 (10, 10) 坐标的偏移。要产生用聚光灯照射字符的效果,请使用黄色填充 spotlight Shape 对象,并将不透明度设置为 35%,以便能够看到字符。请注意,空格也被视为字符。

package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.text.TextField; import flash.geom.Rectangle; import flash.events.MouseEvent; import flash.text.TextFieldAutoSize; import flash.display.Shape; public class TextField_getCharBoundariesExample extends Sprite { private var myTextField:TextField = new TextField(); private var spotlight:Shape = new Shape(); public function TextField_getCharBoundariesExample() { myTextField.x = 10; myTextField.y = 10; myTextField.border = true; myTextField.selectable = false; myTextField.autoSize = TextFieldAutoSize.LEFT; myTextField.text = "Selected a character from this text by clicking on it." myTextField.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(myTextField); this.addChild(spotlight); } private function clickHandler (e:MouseEvent):void { var index:int = myTextField.getCharIndexAtPoint(e.localX, e.localY); if (index != -1) { var frame:Rectangle = myTextField.getCharBoundaries(index); spotlight.graphics.clear(); spotlight.graphics.beginFill(0xFFFF00, .35); spotlight.graphics.drawRect((frame.x + 10), (frame.y + 10), frame.width, frame.height); spotlight.graphics.endFill(); } } } }
flash.geom.Rectangle
getCharIndexAtPoint 在 x 和 y 参数指定的位置返回从零开始的字符索引值。从零开始的字符索引值(例如,第一个位置为 0,第二个位置为 1,依此类推)。如果该位置没有任何字符,则返回 -1。 intxNumber字符的 x 坐标。 yNumber字符的 y 坐标。 返回从零开始的字符索引值。 xy 参数指定的位置返回从零开始的字符索引值。 在下面的示例中,当用户单击某个字符时,将在另一个文本字段中的文本上面回显该字符。

第一个文本字段用于保存用户将要选择的文本。为了确保单击该文本而没有将其选定,请将 selectable 属性设置为 false。当用户单击 firstTextField 文本字段时,将调用 clickHandler() 方法。

clickHandler() 方法中,getCharIndexAtPoint() 方法基于鼠标单击的 localXlocalY 坐标来返回字符的索引。由于文本字段可能比文本大,因此,应检查返回整数 (index) 以确保用户单击了某个字符。(如果该点(鼠标单击)不在某个字符上,getCharIndexAtPoint() 方法将返回 -1。)鼠标坐标用于设置显示回显字符的新文本字段的坐标。第二个文本字段中的字符颜色设置为红色。最后,第二个字段中的文本设置为选定的字符,它是使用 charAt() 方法检索的。请注意,如果使用 text 属性而不是 appendText() 方法,则会覆盖第二个文本字段中的字符,而不是进行附加。

package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.text.TextField; import flash.geom.Rectangle; import flash.events.MouseEvent; import flash.text.TextFieldAutoSize; public class TextField_getCharIndexAtPointExample extends Sprite { private var firstTextField:TextField = new TextField(); private var secondTextField:TextField = new TextField(); public function TextField_getCharIndexAtPointExample() { firstTextField.x = 100; firstTextField.y = 100; firstTextField.width = 260; firstTextField.height = 20; firstTextField.border = true; firstTextField.background = true; firstTextField.selectable = false; firstTextField.text = "Selected a character from this text by clicking on it." firstTextField.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(firstTextField); this.addChild(secondTextField); } private function clickHandler (e:MouseEvent):void { var index:int = firstTextField.getCharIndexAtPoint(e.localX, e.localY); if (index != -1) { secondTextField.x = mouseX; secondTextField.y = 70; secondTextField.border = true; secondTextField.selectable = false; secondTextField.background = true; secondTextField.textColor = 0xFF0000; secondTextField.autoSize = TextFieldAutoSize.LEFT; secondTextField.text = firstTextField.text.charAt(index); } } } }
getFirstCharInParagraph 如果给定一个字符索引,则返回同一段落中第一个字符的索引。指定的字符索引超出范围。 RangeErrorRangeError同一段落中从零开始的第一个字符索引值。 intcharIndexint从零开始的字符索引值(例如,第一个字符的索引值是 0,第二个字符的索引值是 1,依此类推)。 从零开始的字符索引值。 如果给定一个字符索引,则返回同一段落中第一个字符的索引。 在下面的示例中,为文本字段内容应用了段落格式。当用户单击段落时,将右对齐段落文本;当用户再次单击段落时,将恢复为原始(默认)格式(左对齐)。

在构造函数中,将 myTextField 文本字段设置为文本换行。getTextFormat 方法返回文本字段内容中的第一个字符的原始格式,此格式放置在 originalFormat TextFormat 对象中。还定义了一个新的 TextFormat 对象 (newFormat),并将其 align 属性指定为右对齐。当用户单击文本字段时,将调用 clickHandler() 方法。

clickHandler() 方法中,getCharIndexAtPoint() 方法基于鼠标单击的 localXlocalY 坐标来返回字符的索引。第一条 if 语句检查以确定用户是否已单击了某个字符。通过使用由 getCharIndexAtPoint() 方法返回的 clickIndex 整数,getFirstCharInParagraph() 方法将返回用户单击的段落中的第一个字符的索引。段落中的最后一个字符的索引是使用以下方法确定的:将段落中的第一个字符的索引与段落长度(使用 getParagraphLength() 方法)相加,然后减去最后一个字符 (\n)。第二条 if 语句检查段落中的第一个字符的格式。如果其对齐方式值与原始格式(左对齐)相同,则将新格式应用于段落中的所有字符。否则,将段落格式重新设置为原始格式。对齐方式以及格式(如缩进、项目符号、Tab 停靠位、左和右边距)都是用于段落的格式。请注意,在使用自动换行或换行符后,如果没有为 setTextFormat() 方法定义 endIndex 参数,该格式仅适用于段落的第一行。

package { import flash.display.Sprite; import flash.text.TextField; import flash.events.MouseEvent; import flash.text.TextFormat; import flash.text.TextFormatAlign; public class TextField_getFirstCharInParagraphExample extends Sprite { private var myTextField:TextField = new TextField(); private var originalFormat:TextFormat = new TextFormat(); private var newFormat:TextFormat = new TextFormat(); public function TextField_getFirstCharInParagraphExample() { myTextField.x = 10; myTextField.y = 10; myTextField.border = true; myTextField.wordWrap = true; myTextField.width = 300; myTextField.height = 300; myTextField.background = true; myTextField.appendText("The TextField class is used to create display objects for " + "text display and input. All dynamic and input text fields in a SWF file " + "are instances of the TextField class. You can use the TextField class " + "to perform low-level text rendering. However, in Flex, you typically use " + "the Label, Text, TextArea, and TextInput controls to process text. " + "You can give a text field an instance name in the Property inspector " + "and use the methods and properties of the TextField class to manipulate it with ActionScript. " + "TextField instance names are displayed in the Movie Explorer and in the Insert " + "Target Path dialog box in the Actions panel.\n\n" + "To create a text field dynamically, use the TextField constructor.\n\n" + "The methods of the TextField class let you set, select, and manipulate " + "text in a dynamic or input text field that you create during authoring or at runtime.\n\n"); originalFormat = myTextField.getTextFormat(0); newFormat.align = TextFormatAlign.RIGHT; myTextField.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(myTextField); } private function clickHandler(e:MouseEvent):void { var clickIndex:int = myTextField.getCharIndexAtPoint(e.localX, e.localY); if(clickIndex != -1) { var paragraphFirstIndex:int = myTextField.getFirstCharInParagraph(clickIndex); var paragraphEndIndex:int = paragraphFirstIndex + ((myTextField.getParagraphLength(clickIndex) - 1)); if (myTextField.getTextFormat(paragraphFirstIndex).align == originalFormat.align) { myTextField.setTextFormat(newFormat, paragraphFirstIndex, paragraphEndIndex); }else { myTextField.setTextFormat(originalFormat, paragraphFirstIndex, paragraphEndIndex); } } } } }
getImageReference 返回给定 id 或已使用 &lt;img&gt; 标签添加到 HTML 格式文本字段中的图像或 SWF 文件的 DisplayObject 引用。与图像或 SWF 文件(在文本字段的 <img> 标签中具有匹配 id 属性)对应的显示对象。对于从外部源加载的媒体,此对象是 Loader 对象,加载后,媒体对象是该 Loader 对象的子项。对于在 SWF 文件中嵌入的媒体,这是加载的对象。如果不存在具有匹配 id<img> 标签,则此方法会返回 nullflash.display:DisplayObjectidString要匹配的 id(在 <img> 标签的 id 属性中)。 返回给定 id 或已使用 <img> 标签添加到 HTML 格式文本字段中的图像或 SWF 文件的 DisplayObject 引用。<img> 标签的格式如下:

   <img src = 'filename.jpg' id = 'instanceName' >

在下面的示例中,当单击文本字段时,字段中的图像将被设置为 25% 不透明度,并从其原始方向旋转 90 度。以后,每次单击时,该图像将继续旋转。

此图像 (image.jpg) 是通过 HTML 包括的。(此处,假定图像文件位于与 SWF 文件相同的目录中。)为了使用 getImageReference() 方法访问该图像,您需要为 img 标签定义 id 属性。htmlText 属性用于包括 HTML 格式的字符串内容。当用户单击 myTextField 文本字段时,将调用 clickHandler() 方法。

clickHandler() 方法中,getImageReference() 方法将对图像的引用作为 DisplayObject 返回。可以使用此引用来处理图像,就像任何 DisplayObject 对象一样。此处,设置了 alpha(透明度)和 rotation 属性。还可以使用 transform 属性访问显示对象的矩阵、颜色转换和像素范围。另请注意,需要导入 flash.display.DisplayObject

package { import flash.display.Sprite; import flash.text.TextField; import flash.events.Event; import flash.events.MouseEvent; import flash.display.DisplayObject; import flash.text.TextFieldAutoSize; public class TextField_getImageReferenceExample extends Sprite { private var myTextField:TextField = new TextField(); public function TextField_getImageReferenceExample() { var myText1:String = "<p>Here is an image we want to mainpulate: <img src='image.jpg' id='testimage'></p>"; myTextField.x = 10; myTextField.y = 10; myTextField.width = 250; myTextField.height = 250; myTextField.background = true; myTextField.border = true; myTextField.border = true; myTextField.multiline = true; myTextField.htmlText = myText1; myTextField.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(myTextField); } private function clickHandler(e:MouseEvent):void { var imageRef:DisplayObject = myTextField.getImageReference("testimage"); imageRef.rotation += 90; imageRef.x = 125; imageRef.y = 125; imageRef.alpha = 0.25; } } }
htmlText
getLineIndexAtPoint 在 x 和 y 参数指定的位置返回从零开始的行索引值。从零开始的行索引值(例如,第一行的索引值是 0,第二行的索引值是 1,依此类推)。如果该位置没有任何行,则返回 -1。 intxNumber行的 x 坐标。 yNumber行的 y 坐标。 指定位置处行的索引值(从零开始)。 xy 参数指定的位置返回从零开始的行索引值。 在下面的示例中,当用户从莎士比亚的十四行诗中选择一行时,则会将其复制(附加)到新文本字段中。

在构造函数中,将 poem 文本字段设置为不换行(因为它是一首诗)。还使用 autoSize 属性将文本设置为自动适应,并让其调整为左对齐的文本; 并将 poemCopy 文本字段放在 poem 文本字段下面。当用户单击诗歌的某一行时,将调用 clickHandler() 方法。

clickHandler() 方法中,getLineIndexAtPoint() 方法基于鼠标单击的 localXlocalY 坐标返回用户已单击的位置的行索引。(由于原始诗歌适合此处的文本字段大小,因此,不需要检查由 getCharIndexAtPoint() 方法引发的超出范围错误 (RangeError)。)接下来,使用行索引获取该行的内容(作为 getLineText() 方法中的字符串),然后将其附加到 poemCopy 文本字段内容中。可以连续进行复制,但在某一时刻后,文本将超出可查看的 poemCopy 文本字段范围之外。

package { import flash.display.Sprite; import flash.text.TextField; import flash.events.MouseEvent; import flash.text.TextFormat; import flash.text.TextFieldAutoSize; public class TextField_getLineIndexAtPointExample extends Sprite { private var poem:TextField = new TextField(); private var poemCopy:TextField = new TextField(); public function TextField_getLineIndexAtPointExample() { poem.border = true; poem.autoSize = TextFieldAutoSize.LEFT; poem.x = 10; poem.wordWrap = false; poemCopy.height = 250; poemCopy.width = 270; poemCopy.y = 230; poemCopy.x = 10; poemCopy.background = true; poemCopy.border = true; poemCopy.wordWrap = false; poem.appendText("Let me not to the marriage of true minds\n" + "Admit impediments. love is not love\n" + "Which alters when it alteration finds\n" + "Or bends with the remover to remove:\n" + "O no! it is an ever-fixed mark\n" + "That looks on tempests and is never shaken;\n" + "It is the star to every wandering bark,\n" + "Whose worth's unknown, although his height be taken.\n" + "Love's not Time's fool, though rosy lips and cheeks\n" + "Within his bending sickle's compass come:\n" + "Love alters not with his brief hours and weeks,\n" + "But bears it out even to the edge of doom.\n" + "If this be error and upon me proved,\n" + "I never writ, nor no man ever loved."); poem.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(poem); this.addChild(poemCopy); } private function clickHandler(e:MouseEvent):void { var index:int = poem.getLineIndexAtPoint(e.localX, e.localY); var s:String; s = poem.getLineText(index); poemCopy.appendText(s + "\n"); } } }
getLineIndexOfChar 返回 charIndex 参数指定的字符所在的行的索引值(从零开始)。指定的字符索引超出范围。 RangeErrorRangeError从零开始的行索引值。 intcharIndexint从零开始的字符索引值(例如,第一个字符的索引值是 0,第二个字符的索引值是 1,依此类推)。 包含 charIndex 参数指定的字符的行的索引值(从零开始)。 返回 charIndex 参数指定的字符所在的行的索引值(从零开始)。 在下面的示例中,getLineIndexOfChar() 方法返回文本字段中的第 100 个和第 500 个字符的行号。

我们将 myTextField 文本字段定义为换行并调整为左对齐的文本。getLineIndexOfChar() 方法返回指定的字符索引(100 和 500)的行索引。然后,将此信息附加到段落后面。请注意,由于行索引从 0 开始,因此,将行索引 (index) 增加 1 可得出行号。另外,如果调整显示方式,行号可能会发生改变,但此处的信息保持不变,因为只调用一次该方法。

package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class TextField_getLineIndexOfCharExample extends Sprite { public function TextField_getLineIndexOfCharExample() { var myTextField:TextField = new TextField(); myTextField.x = 10; myTextField.y = 10; myTextField.width = 200; myTextField.background = true; myTextField.border = true; myTextField.wordWrap = true; myTextField.autoSize = TextFieldAutoSize.LEFT; myTextField.appendText("The TextField class is used to create display objects for " + "text display and input. All dynamic and input text fields in a SWF file" + "are instances of the TextField class. You can use the TextField class " + "to perform low-level text rendering. However, in Flex, you typically use " + "the Label, Text, TextArea, and TextInput controls to process text. " + "You can give a text field an instance name in the Property inspector " + "and use the methods and properties of the TextField class to manipulate it with ActionScript. " + "TextField instance names are displayed in the Movie Explorer and in the Insert " + "Target Path dialog box in the Actions panel.\n\n"); var index:int = myTextField.getLineIndexOfChar(100); myTextField.appendText("100th character is in line: " + (index + 1) + "\n"); index = myTextField.getLineIndexOfChar(500); myTextField.appendText("500th character is in line: " + (index + 1)); this.addChild(myTextField); } } }
getLineLength 返回特定文本行中的字符数。指定的行号超出范围。 RangeErrorRangeError行中的字符数。 intlineIndexint需要其长度的行号。 返回特定文本行中的字符数。 返回特定文本行中的字符数。 在下面的示例中,当用户选择某一行后,将在单独的文本字段中显示其行长度(字符数)。

为了便于说明,我们将 myTextField 文本字段(显示将要计算的文本)设置为 INPUT,这意味着用户可以实际更改行,或者在行之间或结尾处添加行。(通过使用换行符 (\n),在最后一行的结尾处创建了一个空行。)在 myTextField 文本字段下面设置了 countLines 文本字段(其中显示行长度的计算结果),但无法选择该字段中的文本。当用户单击 myTextField 文本字段中的某一行时,将调用 clickHandler() 方法。

clickHandler() 方法中,getLineIndexAtPoint() 方法通过使用鼠标单击的 localXlocalY 坐标来返回用户所单击的位置的行索引。if 语句检查以确定用户是否已单击了某个字符。如果是,getLineLength() 方法将使用行索引返回行中的字符数。请注意,行之间的空行包含第二个换行符 (\n) 并计为 1 个字符;而最后一行后面的空行计为 0 个字符。空格也计为一个字符。用户可以编写新的行或更改某一行,也可以单击某一行以获取其字符数。如果使用文本换行并调整屏幕大小,行索引可能会发生变化。

package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldType; import flash.events.Event; import flash.events.MouseEvent; public class TextField_getLineLengthExample extends Sprite { private var myTextField:TextField = new TextField(); private var countLines:TextField = new TextField(); public function TextField_getLineLengthExample() { myTextField.x = 10; myTextField.y = 10; myTextField.width = 350; myTextField.height = 150; myTextField.background = true; myTextField.border = true; myTextField.type = TextFieldType.INPUT; myTextField.appendText("Click on the lines to count its number of characters:\n\n"); myTextField.appendText("This is a short line.\n"); myTextField.appendText("This is a longer line than the last line.\n\n"); myTextField.appendText("This one is even longer than the one before. It has two sentences.\n"); this.addChild(myTextField); countLines.border = true; countLines.x = 10; countLines.y = 180; countLines.height = 30; countLines.width = 200; countLines.background = true; countLines.selectable = false; this.addChild(countLines); myTextField.addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(e:MouseEvent):void { var index:int = myTextField.getLineIndexAtPoint(e.localX, e.localY); if (index != -1) { var lenght:int = myTextField.getLineLength(index); countLines.text = "Number of characters in the line is: " + lenght.toString(); } } } }
getLineMetrics 返回给定文本行的度量信息。指定的行号超出范围。 RangeErrorRangeError一个 TextLineMetrics 对象。 flash.text:TextLineMetricslineIndexint需要相关度量信息的行号。 返回给定文本行的度量信息。 返回给定文本行的度量信息。 下面的示例显示两个不同格式的文本行的某些行度量值。

附加的文本选自 Walt Whitman 的诗歌 Song of Myself 中的两行。使用了一个新的 TextFormat 对象 (newFormat) 来设置第二行的格式。第一行保留默认格式。getLineMetrics() 方法返回特定行的 TextLineMetrics 对象。(行索引从 0 开始。) 通过分别使用第 1 行和第 2 行的 metrics1metrics2 TextLineMetrics 对象,可以检索并显示这两行的 ascent、descent、height 和 weight 值。结果数字将转换为字符串,而不进行舍入。请注意,该值用于行而不是特定字符。它反映了某一行的字符范围。例如,如果某一行中包含各种具有不同高度格式的字符,则由高度最高的字符确定该值。这也意味着,如果其中一个字符的格式发生变化,某些度量值也可能会发生变化。

package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextLineMetrics; import flash.text.TextFieldAutoSize; import flash.text.AntiAliasType; import flash.text.TextFormat; public class TextField_getLineMetricsExample extends Sprite { public function TextField_getLineMetricsExample() { var myTextField:TextField = new TextField(); var newFormat:TextFormat = new TextFormat(); myTextField.x = 10; myTextField.y = 10; myTextField.background = true; myTextField.wordWrap = false; myTextField.autoSize = TextFieldAutoSize.LEFT; myTextField.appendText("A child said What is the grass? fetching it to me with full hands;\n"); myTextField.appendText("How could I answer the child? I do not know what it is any more than he.\n\n"); newFormat.size = 14; newFormat.font = "Arial"; newFormat.italic = true; myTextField.setTextFormat(newFormat, 67, 139); var metrics1:TextLineMetrics = myTextField.getLineMetrics(0); myTextField.appendText("Metrics ascent for the line 1 is: " + metrics1.ascent.toString() + "\n"); myTextField.appendText("Metrics descent is: " + metrics1.descent.toString() + "\n"); myTextField.appendText("Metrics height is: " + metrics1.height.toString() + "\n"); myTextField.appendText("Metrics width is: " + metrics1.width.toString() + "\n\n"); var metrics2:TextLineMetrics = myTextField.getLineMetrics(1); myTextField.appendText("Metrics ascent for the line 2 is: " + metrics2.ascent.toString() + "\n"); myTextField.appendText("Metrics descent is: " + metrics2.descent.toString() + "\n"); myTextField.appendText("Metrics height is: " + metrics2.height.toString() + "\n"); myTextField.appendText("Metrics width is: " + metrics2.width.toString() + "\n"); addChild(myTextField); } } }
flash.text.TextLineMetricsflash.text.TextLineMetrics
getLineOffset 返回 lineIndex 参数指定的行中第一个字符的字符索引。指定的行号超出范围。 RangeErrorRangeError行中第一个字符的索引值(从零开始)。 intlineIndexint从零开始的行索引值(例如,第一行的索引值是 0,第二行的索引值是 1,依此类推)。 行中第一个字符的索引值(从零开始)。 返回 lineIndex 参数指定的行中第一个字符的字符索引。 下面的示例检查第 4 行中的第一个字符,如果调整了屏幕(和文本字段)大小,该字符将会发生变化。

我们将 myTextField 文本字段设置为自动换行。countField 文本字段将显示第 4 行中的第一个字符。当用户单击 myTextField 文本字段时,将调用 clickHandler() 方法。

clickHandler() 方法中,getLineOffset() 方法返回行索引 3(第 4 个文本行)中的第一个字符的索引。(第 1 行包含索引 0。) 我们使用 charAt() 方法以及第 4 行中的第一个字符的索引来获取字符; 并通过 countField 文本字段的 text 属性使用此信息更新 countField 文本字段内容。使用 countField.text 属性意味着,每次单击后,将会覆盖 countField 文本字段的内容。如果用户调整了显示方式,内容将会换行,第 4 行中的第一个字符可能会发生变化。通过再次单击 myTextField 字段,将使用第 4 行中的第一个字符(新字符)更新 countField 文本字段的内容。

package { import flash.display.Sprite; import flash.text.TextField; import flash.events.MouseEvent; public class TextField_getLineOffsetExample extends Sprite { private var myTextField:TextField = new TextField(); private var countField:TextField = new TextField(); public function TextField_getLineOffsetExample() { myTextField.x = 10; myTextField.y = 10; myTextField.width = 150; myTextField.height = 300; myTextField.background = true; myTextField.border = true; myTextField.wordWrap = true; countField.height = 20; countField.width = 200; countField.x = 10; countField.y = 320; countField.selectable = false; myTextField.appendText("The TextField class is used to create display objects for " + "text display and input. All dynamic and input text fields in a SWF file " + "are instances of the TextField class. You can use the TextField class " + "to perform low-level text rendering. However, in Flex, you typically use " + "the Label, Text, TextArea, and TextInput controls to process text. " + "You can give a text field an instance name in the Property inspector " + "and use the methods and properties of the TextField class to manipulate it with ActionScript."); myTextField.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(myTextField); this.addChild(countField); } private function clickHandler(e:MouseEvent):void { var c:String; var index:int; index = myTextField.getLineOffset(3); c = myTextField.text.charAt(index); countField.text = "The first character of line 4 is: " + c; } } }
getLineText 返回 lineIndex 参数指定的行的文本。指定的行号超出范围。 RangeErrorRangeError指定行中包含的文本字符串。 StringlineIndexint从零开始的行索引值(例如,第一行的索引值是 0,第二行的索引值是 1,依此类推)。 指定行中包含的文本字符串。 返回 lineIndex 参数指定的行的文本。 在下面的示例中,将查找并显示在莎士比亚的十四行诗中使用“love”一词的所有实例的行号。

我们将 poem 文本字段设置为自动适应文本并调整为左对齐的文本;并将 wordWrap 属性设置为 false,诗歌不会换行(但通常是在使用 autoSize 属性时),因而不会出现问题。for 循环使用文本字段的 numLines 属性循环访问十四行诗中的各行。getLineText() 方法将行内容作为字符串返回。(请注意,numLines 属性从第 1 行开始返回行数;而对于 getLineText() 方法,行号从 0 开始。)通过使用正则表达式模式 (/love/i),if 语句查找词的任何子字符串(大写或小写)。如果找到该模式,search 方法将返回第一个匹配的子字符串的索引,否则,它返回 -1(如果不匹配)。然后,将找到“love”一词的行号 ((i + 1)) 放在字符串 lineResult 中。只要另一个参数是字符串 (" "),此字符串方法就会将数字参数 ((i + 1)) 转换为字符串。搜索的行结果将包含具有“loved”或“Love's”一词的行。如果字符串“Love was found in lines:”是在 for 循环之前附加的,则也会包括此行中的“Love”一词。

package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.utils.Timer; import flash.events.TimerEvent; public class TextField_getLineTextExample extends Sprite { public function TextField_getLineTextExample() { var poem:TextField = new TextField(); var lineResult:String = ""; var pattern:RegExp = /love/i; poem.x = 10; poem.y = 10; poem.background = true; poem.wordWrap = false; poem.autoSize = TextFieldAutoSize.LEFT; poem.text = "Let me not to the marriage of true minds\n" + "Admit impediments. love is not love\n" + "Which alters when it alteration finds\n" + "Or bends with the remover to remove:\n" + "O no! it is an ever-fixed mark\n" + "That looks on tempests and is never shaken;\n" + "It is the star to every wandering bark,\n" + "Whose worth's unknown, although his height be taken.\n" + "Love's not Time's fool, though rosy lips and cheeks\n" + "Within his bending sickle's compass come:\n" + "Love alters not with his brief hours and weeks,\n" + "But bears it out even to the edge of doom.\n" + "If this be error and upon me proved,\n" + "I never writ, nor no man ever loved.\n\n"; for (var i:int = 0; i < poem.numLines; i++) { var s:String = poem.getLineText(i); if(s.search(pattern) != -1) { lineResult += (i + 1) + " "; } } poem.appendText("Love was found in lines: " + lineResult); this.addChild(poem); } } }
getParagraphLength 如果给定一个字符索引,则返回包含给定字符的段落的长度。指定的字符索引超出范围。 RangeErrorRangeError返回段落中的字符数。 intcharIndexint从零开始的字符索引值(例如,第一个字符的索引值是 0,第二个字符的索引值是 1,依此类推)。 从零开始的字符索引值。 如果给定一个字符索引,则返回包含给定字符的段落的长度。长度与段落中的第一个字符(由 getFirstCharInParagraph() 返回)有关,与传入的字符索引无关。 在下面的示例中,当用户选择某个段落时,将在单独的文本字段中显示段落长度和段落中的“s”字符数。

myTextField 文本字段显示用户将选择的段落。当用户单击该文本字段时,将调度 MouseEvent.CLICK 事件并调用 clickHandler() 方法。段落长度和“s”字符数将显示在 countField 文本字段中,该字段位于 myTextField 文本字段下面。

clickHandler() 方法中,getCharIndexAtPoint() 方法基于鼠标单击的 localXlocalY 坐标来返回字符的索引。第一条 if 语句检查以确定用户是否已单击了某个字符。getFirstCharInParagraph() 方法使用此索引返回相同段落中的第一个字符的索引。可以将 getParagraphLength() 方法返回的段落长度与段落中第一个字符的索引配合使用来确定段落结尾的索引。for 循环将循环访问段落以查找“s”字符数。

package { import flash.display.Sprite; import flash.text.TextField; import flash.events.MouseEvent; public class TextField_getParagraphLengthExample extends Sprite { private var myTextField:TextField = new TextField(); private var countField:TextField = new TextField(); public function TextField_getParagraphLengthExample() { myTextField.x = 10; myTextField.y = 10; myTextField.background = true; myTextField.border = true; myTextField.wordWrap = true; myTextField.width = 300; myTextField.height = 280; myTextField.appendText("The TextField class is used to create display objects for " + "text display and input. All dynamic and input text fields in a SWF file" + "are instances of the TextField class. You can use the TextField class " + "to perform low-level text rendering. However, in Flex, you typically use " + "the Label, Text, TextArea, and TextInput controls to process text. " + "You can give a text field an instance name in the Property inspector " + "and use the methods and properties of the TextField class to manipulate it with ActionScript. " + "TextField instance names are displayed in the Movie Explorer and in the Insert " + "Target Path dialog box in the Actions panel.\n\n" + "To create a text field dynamically, use the TextField() constructor.\n\n" + "The methods of the TextField class let you set, select, and manipulate " + "text in a dynamic or input text field that you create during authoring or at runtime."); myTextField.addEventListener(MouseEvent.CLICK, clickHandler); countField.x = 10; countField.y = 300; countField.height = 50; countField.width = 250; countField.background = true; countField.selectable = false; this.addChild(myTextField); this.addChild(countField); } private function clickHandler(e:MouseEvent):void { var index:int = myTextField.getCharIndexAtPoint(e.localX, e.localY); if(index != -1) { var beginParag:int = myTextField.getFirstCharInParagraph(index); var paragLength:int = myTextField.getParagraphLength(index); var endParag:int = beginParag + paragLength; var sCount:uint = 0; for (var i:int = beginParag; i <= endParag; i++) { if ((myTextField.text.charAt(i) == "s") || (myTextField.text.charAt(i) == "S")) { sCount++; } countField.text = "Paragraph length is: " + paragLength.toString() + "\n" + "Number of 's' characters in the paragraph: " + sCount.toString(); } } } } }
flash.text.TextField.getFirstCharInParagraph()
getTextFormat 返回 TextFormat 对象,其中包含 beginIndex 和 endIndex 参数指定的文本范围的格式信息。指定的 beginIndexendIndex 超出范围。 RangeErrorRangeError表示指定文本格式设置属性的 TextFormat 对象。 flash.text:TextFormatbeginIndexint-1可选;一个指定文本字段中某段文本起始位置的整数。 endIndexint-1可选;一个整数,指定所需文本范围后面的第一个字符的位置。正如所设计的一样,如果指定 beginIndexendIndex 值,则读取从 beginIndexendIndex-1 的文本。 返回一个 TextFormat 对象。 返回 TextFormat 对象,其中包含 beginIndexendIndex 参数指定的文本范围的格式信息。在生成的 TextFormat 对象中,只设置指定的整个文本共有的属性。所有混合型属性(意味着它在文本中的不同位置有不同的值)的值都为 null

如果没有为这些参数指定值,则此方法适用于文本字段中的所有文本。

下表描述三种可能的用法:

用法说明my_textField.getTextFormat()返回一个 TextFormat 对象,该对象包含文本字段中所有文本的格式设置信息。在结果 TextFormat 对象中只设置文本字段中所有文本共有的属性。所有混合型属性(意味着它在文本中的不同位置有不同的值)的值都为 nullmy_textField.getTextFormat(beginIndex:Number)返回一个 TextFormat 对象,其中包含 beginIndex 位置处字符的文本格式的一个副本。my_textField.getTextFormat(beginIndex:Number,endIndex:Number)返回一个 TextFormat 对象,该对象包含从 beginIndexendIndex-1 范围内文本的格式设置信息。在结果 TextFormat 对象中只设置特定范围内所有文本共有的属性。所有混合型属性(也就是说,在该范围内的不同位置有不同的值)的值都设置为 null
有关如何使用 getTextFormat() 方法的说明,请参阅 getFirstCharInParagraph()setTextFormat() 方法示例。
flash.text.TextFormatflash.text.TextField.defaultTextFormatflash.text.TextField.setTextFormat()
isFontCompatible 如果具有指定的 fontName 和 fontStyle(其中的 Font.fontType 为 flash.text.FontType.EMBEDDED)的嵌入字体可用,则将返回 true。指定的 fontStyle 不是 flash.text.FontStyle 的成员。 ArgumentErrorArgumentError如果兼容的嵌入字体可用,则为 true;否则为 falseBooleanfontNameString要检查的嵌入字体的名称。 fontStyleString指定要检查的字体样式。使用 flash.text.FontStyle 如果具有指定的 fontNamefontStyle(其中 Font.fontTypeflash.text.FontType.EMBEDDED)的嵌入字体可用,则将返回 true。从 Flash Player 10 开始,两种嵌入字体可显示在 SWF 文件中。标准的嵌入字体只能与 TextField 对象一起使用。CFF 嵌入字体只能与 flash.text.engine 类一起使用。这两种类型由 enumerateFonts() 函数返回的 Font 类的 fontType 属性加以区分。

TextField 不能使用类型为 EMBEDDED_CFF 的字体。如果 embedFonts 设置为 true 并且运行时唯一可用的具有指定名称和样式的字体的类型为 EMBEDDED_CFF,则 Flash Player 将无法呈现文本,就如同没有任何可用的具有指定名称和样式的嵌入字体。

如果具有相同名称和样式的 EMBEDDEDEMBEDDED_CFF 字体可用,则将选择 EMBEDDED 字体并使用 EMBEDDED 字体呈现文本。

flash.text.engine.FontDescription.fontLookupflash.text.engine.TextBlock.createTextLine()flash.text.FontType.EMBEDDED_CFF
replaceSelectedText 使用 value 参数的内容替换当前所选内容。此方法不能用于具有样式表的文本字段。 ErrorErrorvalueString要替换当前所选文本的字符串。 使用 value 参数的内容替换当前所选内容。 使用 value 参数的内容替换当前所选内容。使用当前默认字符格式和默认段落格式,在当前所选内容的所在位置插入文本。不将该文本视为 HTML。

可以使用 replaceSelectedText() 方法插入和删除文本,而不破坏其余文本的字符和段落格式。

注意:如果已对文本字段应用了样式表,则此方法不起作用。

在下面的示例中,用户从第一个文本字段中选择某些文本以将其删除,然后将第二个文本字段中的选定文本替换为“NEW TEXT”字符串。

我们创建了两个不同的 TextField 对象,并为 MouseEvent.MOUSE_UP 事件添加了事件侦听器。当用户松开鼠标时,鼠标将弹起;在选择文本后,通常会发生这种事件。请注意,文本字段的默认设置是选择其文本。

mouseHandler1() 方法中,当用户在 myTextField1 文本字段中松开鼠标时,将删除该文本并替换为空字符串。此操作可能会继续进行,直至删除所有文本时为止。在 mouseHandler2() 方法中,当用户在 myTextField2 文本字段中选择某些文本时,将检查 selectionBeginIndexselectionEndIndex 属性以确定是否选择了任何字符。(如果选择了某些文本,selectionBeginIndexselectionEndIndex 属性不会具有相同的值。) 然后,将所选文本替换为“NEW TEXT”字符串。此操作可能会继续进行,直至将第二个文本字段的所有原始文本替换为“NEW TEXT”字符串时为止。

package { import flash.display.Sprite; import flash.text.TextField; import flash.events.MouseEvent; public class TextField_replaceSelectedTextExample extends Sprite { private var myTextField1:TextField = new TextField(); private var myTextField2:TextField = new TextField(); public function TextField_replaceSelectedTextExample() { myTextField1.x = 10; myTextField1.width = 300; myTextField1.height = 50; myTextField1.background = true; myTextField1.border = true; myTextField1.text = "Select the text you want to remove from the line."; myTextField2.x = 10; myTextField2.y = 60; myTextField2.width = 300; myTextField2.height = 50; myTextField2.background = true; myTextField2.border = true; myTextField2.text = "Select the text you want to replace with NEW TEXT."; myTextField1.addEventListener(MouseEvent.MOUSE_UP, mouseHandler1); myTextField2.addEventListener(MouseEvent.MOUSE_UP, mouseHandler2); this.addChild(myTextField1); this.addChild(myTextField2); } private function mouseHandler1(e:MouseEvent):void { myTextField1.replaceSelectedText(""); } private function mouseHandler2(e:MouseEvent):void { if(myTextField2.selectionBeginIndex != myTextField2.selectionEndIndex) { myTextField2.replaceSelectedText("NEW TEXT"); } } } }
flash.display.Stage.focus
replaceText 将 beginIndex 和 endIndex 参数指定的字符范围替换为 newText 参数的内容。此方法不能用于具有样式表的文本字段。 ErrorErrorbeginIndexint替换范围开始位置的从零开始的索引值。 endIndexint所需文本范围后面的第一个字符的从零开始的索引位置。 newTextString要用来替换指定范围字符的文本。 替换某范围内的字符。 beginIndexendIndex 参数指定的字符范围替换为 newText 参数的内容。正如所设计的一样,将替换从 beginIndexendIndex-1 的文本。

注意:如果已对文本字段应用了样式表,则此方法不起作用。

下面的示例使用 replaceText() 方法在文本字段中删除、替换并插入一些文本。

我们将 outputText 文本字段设置为自动适应文本并调整为左对齐的文本。通过使用第一个 replaceText() 方法调用,将第一行(“This is the wrong heading”)替换为“THIS IS THE HEADING FOR EVERYONE”。通过使用第二个方法调用,在“THE”和“HEADING”之间插入文本“CORRECT”。通过使用第三个方法调用,删除词语“FOR EVERYONE”。请注意,执行每个 appendText() 方法调用时,将更改当前文本的开头和结尾。此处,仅显示了最终文本(进行更改后)。

package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class TextField_replaceTextExample extends Sprite { public function TextField_replaceTextExample() { var outputText:TextField = new TextField(); outputText.x = 10; outputText.y = 10; outputText.background = true; outputText.autoSize = TextFieldAutoSize.LEFT; outputText.appendText("This is the wrong heading"); outputText.appendText("\n\n"); outputText.appendText("This is the body of the text."); outputText.replaceText(0, 25, "THIS IS THE HEADING FOR EVERYONE"); outputText.replaceText(12, 12, "CORRECT "); outputText.replaceText(27, 40, ""); this.addChild(outputText); } } }
setSelection 将第一个字符和最后一个字符的索引值(使用 beginIndex 和 endIndex 参数指定)指定的文本设置为所选内容。beginIndexint所选内容中第一个字符从零开始的索引值(例如,第一个字符的索引值是 0,第二个字符的索引值是 1,依此类推)。 endIndexint所选内容中最后一个字符从零开始的索引值。 设置新的文本选择。 将第一个字符和最后一个字符的索引值(使用 beginIndexendIndex 参数指定)指定的文本设置为所选内容。如果两个参数值相同,则此方法会设置插入点,就如同设置 caretIndex 属性一样。 在下面的示例中,当用户单击文本字段中的任何位置时,将选择预定义的文本范围(加亮显示词语“TEXT IN ALL CAPS”)。

myTextField 文本字段的两个事件侦听器将响应用户的鼠标单击或鼠标弹起事件。当用户松开鼠标时,鼠标将弹起;在选择文本后,通常会发生这种事件。请注意,文本字段的默认设置是选择其文本。当单击某些文本时,将调用 clickHandler() 方法。当选择某些文本并松开鼠标时,将调用 mouseUpHandler() 方法。

clickHandler()mouseUpHandler() 方法中,setSelection() 方法设置仅选择索引 54 和 70 之间的字符 (TEXT IN ALL CAPS)。

package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class TextField_setSelectionExample extends Sprite { private var myTextField:TextField = new TextField(); public function TextField_setSelectionExample() { myTextField.autoSize = TextFieldAutoSize.LEFT; myTextField.text = "No matter where you click on this text field only the TEXT IN ALL CAPS is selected."; myTextField.addEventListener(MouseEvent.CLICK, clickHandler); myTextField.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); this.addChild(myTextField); } private function clickHandler(event:MouseEvent):void { myTextField.setSelection(54, 70); } private function mouseUpHandler(event:MouseEvent):void { myTextField.setSelection(54, 70); } } }
selectableselectionBeginIndexselectionEndIndexcaretIndex
setTextFormat 将 format 参数指定的文本格式应用于文本字段中的指定文本。此方法不能用于具有样式表的文本字段。 ErrorError指定的 beginIndexendIndex 超出范围。 RangeErrorRangeErrorformatflash.text:TextFormat一个包含字符和段落格式设置信息的 TextFormat 对象。 beginIndexint-1可选;一个整数,指定所需文本范围内第一个字符的从零开始的索引位置。 endIndexint-1可选;一个整数,指定所需文本范围后面的第一个字符。正如所设计的一样,如果指定 beginIndexendIndex 值,则更新从 beginIndexendIndex-1 的文本。

用法说明my_textField.setTextFormat(textFormat:TextFormat)textFormat 的属性应用于文本字段中的所有文本。my_textField.setTextFormat(textFormat:TextFormat, beginIndex:int)textFormat 的属性应用于从 beginIndex 处开始的文本。my_textField.setTextFormat(textFormat:TextFormat, beginIndex:int, endIndex:int)textFormat 参数的属性应用于范围从 beginIndex 处到 endIndex-1 处的文本。

请注意,对于用户手动插入的任何文本或通过 replaceSelectedText() 方法替换的任何文本,将接收默认的文本格式设置(而非为文本插入点指定的格式设置)以应用于新文本。要为新文本设置文本字段的默认格式设置,请使用 defaultTextFormat 属性。

应用文本格式设置。
format 参数指定的文本格式应用于文本字段中的指定文本。format 的值必须是指定所需文本格式设置更改的 TextFormat 对象。只有 format 的非空属性才会应用到文本字段。不会应用 format 的设置为 null 的任何属性。默认情况下,新创建的 TextFormat 对象的所有属性都设置为 null

注意:如果已对文本字段应用了样式表,则此方法不起作用。

setTextFormat() 方法会更改应用于文本字段中一定范围的字符或整个文本的文本格式设置。要将 format 的属性应用于文本字段中的所有文本,请不要指定 beginIndexendIndex 的值。要将 format 的属性应用于一定范围的文本,请指定 beginIndexendIndex 参数的值。可以使用 length 属性来确定索引值。

TextFormat 对象中包含两种类型的格式设置信息:字符级格式设置和段落级格式设置。文本字段中的每个字符都可以有自己的字符格式设置,例如字体名称、字体大小、粗体和斜体。

对于段落,通过检查段落的第一个字符可了解整个段落的格式设置。段落格式设置的示例有左边距、右边距和缩进。

对于用户手动插入的任何文本或通过 replaceSelectedText() 方法替换的任何文本,将接收默认的文本格式设置(而非为文本插入点指定的格式设置)以应用于新文本。要为新文本设置默认格式,请使用 defaultTextFormat

在下面的示例中,当单击文本时,所定义范围内的文本(“TEXT IN ALL CAPS”)将在默认文本格式和新格式之间切换格式。

我们为 myTextField 文本字段添加了一个事件侦听器,以便通过调用 clickHandler() 方法来响应鼠标单击。在 clickHandler() 方法中,getTextFormat() 方法从指定的文本范围中返回字符(索引 55)的当前格式,然后,将其放在 currentTextFormat TextFormat 对象中。if 语句检查 currentTextFormat 文本格式,以确定该范围内的字符是否使用新格式(字体点值设置为 18)。如果不是,则新格式将在 54-70 范围内的文本 (TEXT IN ALL CAPS) 的大小更改为 18 点,将颜色更改为红色,并应用下划线和斜体。如果该范围内的字符使用的是新格式,则将该范围的格式重新设置为文本字段的默认(原始)格式。

package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFieldAutoSize; import flash.events.MouseEvent; public class TextField_setTextFormatExample extends Sprite { private var myTextField:TextField = new TextField(); private var newFormat:TextFormat = new TextFormat(); public function TextField_setTextFormatExample() { myTextField.autoSize = TextFieldAutoSize.LEFT; myTextField.selectable = false; myTextField.background = true; myTextField.text = "No matter where you click on this text field only the TEXT IN ALL CAPS changes format."; myTextField.addEventListener(MouseEvent.CLICK, clickHandler); newFormat.color = 0xFF0000; newFormat.size = 18; newFormat.underline = true; newFormat.italic = true; this.addChild(myTextField); } private function clickHandler(event:MouseEvent):void { var currentTextFormat:TextFormat = myTextField.getTextFormat(55); if(currentTextFormat.size != 18) { myTextField.setTextFormat(newFormat, 54, 70); } else { myTextField.setTextFormat(myTextField.defaultTextFormat); } } } }
flash.text.TextFormatflash.text.TextField.defaultTextFormat
alwaysShowSelection 如果设置为 true 且文本字段没有焦点,Flash Player 将以灰色突出显示文本字段中的所选内容。Booleanfalse 如果设置为 true 且文本字段没有焦点,Flash Player 将以灰色突出显示文本字段中的所选内容。如果设置为 false 且文本字段没有焦点,则 Flash Player 不会突出显示文本字段中的所选内容。 编译并运行下面的文件。在运行此文件时,拖动以分别选择两个文本字段中的文本,注意在您选择两个文本字段中的文本(更改焦点)时,突出显示的所选内容之间的区别: package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldType; public class TextField_alwaysShowSelection extends Sprite { public function TextField_alwaysShowSelection() { var label1:TextField = createCustomTextField(0, 20, 200, 20); label1.text = "This text is selected."; label1.setSelection(0, 9); label1.alwaysShowSelection = true; var label2:TextField = createCustomTextField(0, 50, 200, 20); label2.text = "Drag to select some of this text."; } private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.width = width; result.height = height; addChild(result); return result; } } } flash.display.Stage.focusantiAliasType 用于此文本字段的消除锯齿类型。String使用的消除锯齿类型。 用于此文本字段的消除锯齿类型。将 flash.text.AntiAliasType 常数用于此属性。仅在字体为嵌入(即 embedFonts 属性设置为 true)时可以控制此设置。默认设置为 flash.text.AntiAliasType.NORMAL

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

字符串值说明flash.text.AntiAliasType.NORMAL应用常规文本消除锯齿功能。此值与 Flash Player 7 和早期版本中使用的消除锯齿的类型匹配。flash.text.AntiAliasType.ADVANCED应用高级消除锯齿功能,这增加了文本的可读性。(此功能在 Flash Player 8 中可用。)高级消除锯齿功能可以高品质呈现小尺寸的字体。它最适合在具有大量小字号文本的应用程序中使用。建议不要对大于 48 点的字体使用高级消除锯齿功能。
flash.text.AntiAliasTypeflash.text.TextField.embedFonts
autoSize 控制文本字段的自动大小调整和对齐。String指定的 autoSize 不是 flash.text.TextFieldAutoSize 的成员。 ArgumentErrorArgumentError控制文本字段的自动大小调整和对齐。 控制文本字段的自动大小调整和对齐。TextFieldAutoSize 常数的可接受值为 TextFieldAutoSize.NONE(默认值)、TextFieldAutoSize.LEFTTextFieldAutoSize.RIGHTTextFieldAutoSize.CENTER

如果 autoSize 设置为 TextFieldAutoSize.NONE(默认值),则不会进行调整。

如果 autoSize 设置为 TextFieldAutoSize.LEFT,会将文本视为左对齐文本,这意味着该文本字段的左边距保持固定,在右边可调整单个文本字段行。如果文本中包括换行符(例如 "\n""\r"),则会另外调整底边来适合文本的下一行。如果 wordWrap 也设置为 true,则仅调整文本字段的底边,而右边距保持固定。

如果 autoSize 设置为 TextFieldAutoSize.RIGHT,会将文本视为右对齐文本,这意味着该文本字段的右边距保持固定,可在左边调整单个文本字段行。如果文本中包括换行符(例如 "\n" or "\r")),则会另外调整底边来适合文本的下一行。如果 wordWrap 也设置为 true,则仅调整文本字段的底边,而左边距保持固定。

如果 autoSize 设置为 TextFieldAutoSize.CENTER,会将文本视为居中对齐文本,这意味着对单个文本字段行的调整将使其在左右边距间均衡分布。如果文本中包括换行符(例如 "\n""\r"),则会另外调整底边来适合文本的下一行。如果 wordWrap 也设置为 true,则仅调整文本字段的底边,而左右边距保持固定。

flash.text.TextFieldAutoSizeflash.text.TextField.autoSizeflash.text.TextField.wordWrap
backgroundColor 文本字段背景的颜色。uint 文本字段背景的颜色。默认值为 0xFFFFFF(白色)。即使当前没有背景,也可检索或设置此属性,但只有当文本字段已将 background 属性设置为 true 时,才可以看到颜色。 flash.text.TextField.backgroundbackground 指定文本字段是否具有背景填充。Booleanfalse 指定文本字段是否具有背景填充。如果为 true,则文本字段具有背景填充。如果为 false,则文本字段没有背景填充。使用 backgroundColor 属性来设置文本字段的背景颜色。 flash.text.TextField.backgroundColorborderColor 文本字段边框的颜色。uint 文本字段边框的颜色。默认值为 0x000000(黑色)。即使当前没有边框,也可检索或设置此属性,但只有当文本字段已将 border 属性设置为 true 时,才可以看到颜色。 flash.text.TextField.borderborder 指定文本字段是否具有边框。Booleanfalse 指定文本字段是否具有边框。如果为 true,则文本字段具有边框。如果为 false,则文本字段没有边框。使用 borderColor 属性来设置边框颜色。 flash.text.TextField.borderColorbottomScrollV 一个整数(从 1 开始的索引),表示指定文本字段中当前可以看到的最后一行。int一个整数,表示文本字段中的最后一行。 一个整数(从 1 开始的索引),表示指定文本字段中当前可以看到的最后一行。可将文本字段看作文本块上的一个窗口。scrollV 属性是此窗口中最顶端可见行的从 1 开始的索引。

当前可以看到文本字段中 scrollVbottomScrollV 表示的行之间的所有文本。

flash.text.TextField.scrollV
caretIndex 插入点(尖号)位置的索引。int返回闪烁插入点的从零开始的索引值。 插入点(尖号)位置的索引。如果没有显示任何插入点,则在将焦点恢复到字段时,值将为插入点所在的位置(通常为插入点上次所在的位置,如果字段不曾具有焦点,则为 0)。

选择范围索引是从零开始的(例如,第一个位置为 0、第二个位置为 1,依此类推)。

在此示例中,创建了一个 TextField 实例,并用文本填充该实例。分配了一个事件侦听器,以便在用户单击 TextField 时,调用 printCursorPosition 方法。在这种情况下,将输出 caretIndexselectionBeginIndexselectionEndIndex 属性的值。

运行此示例并尝试在 TextField 中单击以选择文本。然后在字段中单击,但不选择文本。如果在文本中单击但不进行选择,caretIndex 属性将指示在何处出现插入点,而 selectionBeginIndexselectionEndIndex 属性则等于 caretIndex 属性值。

package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.text.TextField; import flash.text.TextFieldType; public class TextField_caretIndex extends Sprite { public function TextField_caretIndex() { var tf:TextField = createCustomTextField(10, 10, 100, 100); tf.wordWrap = true; tf.type = TextFieldType.INPUT; tf.text = "Click in this text field. Compare the difference between clicking without selecting versus clicking and selecting text."; tf.addEventListener(MouseEvent.CLICK, printCursorPosition); } private function printCursorPosition(event:MouseEvent):void { var tf:TextField = TextField(event.target); trace("caretIndex:", tf.caretIndex); trace("selectionBeginIndex:", tf.selectionBeginIndex); trace("selectionEndIndex:", tf.selectionEndIndex); } private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.width = width; result.height = height; addChild(result); return result; } } }
selectableselectionBeginIndexselectionEndIndex
condenseWhite 一个布尔值,指定是否删除具有 HTML 文本的文本字段中的额外空白(空格、换行符等等)。Boolean一个布尔值,指定是否删除具有 HTML 文本的文本字段中的额外空白。 一个布尔值,指定是否删除具有 HTML 文本的文本字段中的额外空白(空格、换行符等等)。默认值为 falsecondenseWhite 属性只影响使用 htmlText 属性(而非 text 属性)设置的文本。如果使用 text 属性设置文本,则忽略 condenseWhite

如果 condenseWhite 设置为 true,请使用标准 HTML 命令(如 <BR><P>),将换行符放在文本字段中。

在设置 htmlText 属性之前设置 condenseWhite 属性。

下面显示将 condenseWhite 设置为 false 和将其设置为 true 之间的区别: package { import flash.display.Sprite; import flash.text.TextField; public class TextField_condenseWhite extends Sprite { public function TextField_condenseWhite() { var tf1:TextField = createCustomTextField(0, 0, 200, 50); tf1.condenseWhite = false; tf1.htmlText = "keep on\n\ttruckin'"; var tf2:TextField = createCustomTextField(0, 120, 200, 50); tf2.condenseWhite = true; tf2.htmlText = "keep on\n\ttruckin'"; } private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.width = width; result.height = height; result.border = true; addChild(result); return result; } } }
flash.text.TextField.htmlText
defaultTextFormat 指定应用于新插入文本(例如,用户输入的文本或使用 replaceSelectedText() 方法插入的文本)的格式。flash.text:TextFormat此方法不能用于具有样式表的文本字段。 ErrorError为新插入的文本指定文本格式。 指定应用于新插入文本(例如,用户输入的文本或使用 replaceSelectedText() 方法插入的文本)的格式。

注意:当选择要替换为 setSelection()replaceSelectedText() 的字符时,仅在选择的文本达到和包括最后字符时才会应用 defaultTextFormat。下面是一个示例:

     var my_txt:TextField new TextField();
     my_txt.text = "Flash Macintosh version";
     var my_fmt:TextFormat = new TextFormat();
     my_fmt.color = 0xFF0000;
     my_txt.defaultTextFormat = my_fmt;
     my_txt.setSelection(6,15); // partial text selected - defaultTextFormat not applied
     my_txt.setSelection(6,23); // text selected to end - defaultTextFormat applied
     my_txt.replaceSelectedText("Windows version");
     

在访问 defaultTextFormat 属性时,返回的 TextFormat 对象已定义了它的所有属性。所有属性都不为 null

注意:如果对文本字段应用了样式表,则不能设置该属性。

flash.text.TextField.replaceSelectedText()flash.text.TextField.getTextFormat()flash.text.TextField.setTextFormat()
displayAsPassword 指定文本字段是否是密码文本字段。Booleanfalse 指定是否隐藏输入字符。 指定文本字段是否是密码文本字段。如果此属性的值为 true,则文本字段被视为密码文本字段,并使用星号而不是实际字符来隐藏输入的字符。如果为 false,则不会将文本字段视为密码文本字段。启用密码模式时,“剪切”和“复制”命令及其对应的键盘快捷键将不起作用。此安全机制可防止不良用户使用快捷键在无人看管的计算机上破译密码。 embedFonts 指定是否使用嵌入字体轮廓进行呈现。Booleanfalse 呈现使用字体轮廓或设备字体的文本字段。 指定是否使用嵌入字体轮廓进行呈现。如果为 false,则 Flash Player 使用设备字体呈现文本字段。

如果将文本字段的 embedFonts 属性设置为 true,则必须使用应用于该文本字段的 TextFormat 对象的 font 属性来指定该文本的字体。如果指定的字体没有嵌入 SWF 文件中,则不会显示该文本。

Font.enumerateFonts()
gridFitType 用于此文本字段的网格固定类型。Stringpixel 使用的网格固定类型。 用于此文本字段的网格固定类型。仅在文本字段的 flash.text.AntiAliasType 属性设置为 flash.text.AntiAliasType.ADVANCED 时才应用此属性。

使用的网格固定类型确定了 Flash Player 是否强制让粗水平线和垂直线适合像素网格或子像素网格。

对于 flash.text.GridFitType 属性,您可以使用下列字符串值:

字符串值说明flash.text.GridFitType.NONE指定无网格固定。不强制根据像素网格调整字型中的水平线和垂直线。建议对动画或大号字使用此设置。flash.text.GridFitType.PIXEL指定粗水平线和垂直线适合像素网格。此设置仅适用于左对齐文本字段。要使用此设置,文本字段的 flash.dispaly.AntiAliasType 属性必须设置为 flash.text.AntiAliasType.ADVANCED。此设置通常能为左对齐文本提供最佳可读性。flash.text.GridFitType.SUBPIXEL指定粗水平线和垂直线适合 LCD 显示器上的子像素网格。要使用此设置,文本字段的 flash.text.AntiAliasType 属性必须设置为 flash.text.AntiAliasType.ADVANCEDflash.text.GridFitType.SUBPIXEL 设置通常适合右对齐或居中的动态文本,有时,为了在动画与文本品质之间达到一种平衡,也可使用此设置。
下面的示例显示具有不同 gridFitType 属性设置的三个文本字段。在使用此示例时,请注意前两行在清晰度方面的差异。还要注意用于左对齐文本的 GridFitType.PIXEL 和用于右对齐文本的 GridFitType.SUBPIXEL 的最佳用法。 package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFieldAutoSize; import flash.text.AntiAliasType; import flash.text.GridFitType; public class gridFitTypeExample extends Sprite { public function gridFitTypeExample() { var format1:TextFormat = new TextFormat(); format1.font="Arial"; format1.size=12; var tf1:TextField = createCustomTextField(0,0,format1,"NONE",TextFieldAutoSize.LEFT,GridFitType.NONE); var tf2:TextField = createCustomTextField(0,30,format1,"PIXEL",TextFieldAutoSize.LEFT,GridFitType.PIXEL); var tf3:TextField = createCustomTextField(300,60,format1,"SUBPIXEL",TextFieldAutoSize.RIGHT,GridFitType.SUBPIXEL); } private function createCustomTextField(x:Number,y:Number,fm:TextFormat,tl:String,tfs:String,gft:String):TextField { var result:TextField = new TextField(); result.x=x; result.y=y; result.embedFonts=true; result.antiAliasType=AntiAliasType.ADVANCED; result.text="This text uses a gridFitType of " + tl; result.autoSize=tfs; result.gridFitType=gft; result.setTextFormat(fm); addChild(result); return result; } } }
flash.text.GridFitTypeflash.text.TextField.antiAliasTypeflash.text.AntiAliasType
htmlText 包含文本字段内容的 HTML 表示形式。String文本字段内容的 HTML 表示形式。 包含文本字段内容的 HTML 表示形式。

Flash Player 支持以下 HTML 标签:

标签 说明 锚标签 <a> 标签创建超文本链接并支持以下属性:
  • target:指定加载页面的目标窗口的名称。选项包括 _self_blank_parent_top_self 选项指定当前窗口中的当前帧,_blank 指定一个新窗口,_parent 指定当前帧的父级,而 _top 指定当前窗口中的顶级帧。
  • href:指定 URL 或 ActionScript link 事件。URL 可以是绝对路径或相对路径(相对于加载页的 SWF 文件的位置)。http://www.adobe.com 示例表示对 URL 的绝对引用;/index.html 示例表示相对引用。绝对 URL 必须以 http:// 为前缀,否则 Flash Player 或 AIR 会将其视为相对 URL。可以使用 link 事件使链接执行 SWF 文件中的 ActionScript 函数,而不是打开 URL。要指定 link 事件,请在 href 属性中使用 event 方案,而不是 http 方案。例如,使用 href="event:myText" 而不是 href="http://myURL";当用户单击包含 event 方案的超文本链接时,文本字段将调度 link TextEvent,并将其 text 属性设置为“myText”。可随后创建一个 ActionScript 函数,每次调度 link TextEvent 时都会执行该函数。还可以使用样式表为锚标签定义 a:linka:hovera:active 样式。
粗体标签 <b> 标签以粗体形式呈现文本。粗体必须可用于所使用的字体。 换行标签 <br> 标签将在文本字段中创建一个换行符。将文本字段设置为多行文本字段以使用此标签。 字体标签 <font> 标签指定一种字体或一个字体列表来显示文本。字体标签支持以下属性:
  • color:只支持十六进制颜色 (#FFFFFF) 值。
  • face:指定要使用的字体的名称。如下例所示,您可以指定一个以逗号分隔的字体名称的列表,在这种情况下,Flash Player 选择第一个可用字体。如果本地计算机系统上未安装指定的字体,或 SWF 文件中未嵌入指定的字体,则 Flash Player 将选择替代字体。
  • size:指定字体的大小。您可以使用绝对像素大小(如 16 或 18),也可以使用相对点值(如 +2 或 -4)。
图像标签 使用 <img> 标签可将外部图像文件(JPEG、GIF、PNG)、SWF 文件和影片剪辑嵌入到文本字段中。在文本字段中,文本在嵌入的图像旁自动换行。您必须将文本字段设置为多行才能在图像周围绕排文本。

<img> 标签支持以下属性:

  • src:指定图像或 SWF 文件的 URL,或库中影片剪辑元件的链接标识符。此属性是必需的,所有其他属性都是可选的。外部文件(JPEG、GIF、PNG 和 SWF 文件)只有在完全下载之后才能显示。
  • width:所插入的图像、SWF 文件或影片剪辑的宽度(以像素为单位)。
  • height:所插入的图像、SWF 文件或影片剪辑的高度(以像素为单位)。
  • align:指定文本字段中嵌入图像的水平对齐方式。有效值为 leftright。默认值为 left
  • hspace:指定图像周围不显示任何文本的水平空间量。默认值为 8。
  • vspace:指定图像周围不显示任何文本的垂直空间量。默认值为 8。
  • id:指定包含嵌入的图像文件、SWF 文件或影片剪辑的影片剪辑实例(由 Flash Player 创建)的名称。此方法可用于使用 ActionScript 控制嵌入的内容。
  • checkPolicyFile:指定 Flash Player 将在与图像域相关的服务器上查找 URL 策略文件。如果存在策略文件,则此文件中列出的域中的 SWF 文件可以访问所加载的图像的数据,例如,通过使用此图像作为 source 参数来调用 BitmapData.draw() 方法。有关安全性的详细信息,请参阅 Flash Player 开发人员中心主题:安全性

Flash 以完全大小显示文本字段中嵌入的媒体。要指定嵌入的媒体的尺寸,请使用 <img> 标签的 heightwidth 属性。

通常情况下,文本字段中嵌入的图像显示在 <img> 标签后的行上。但是,如果 <img> 标签是文本字段中的第一个字符,则该图像显示在文本字段的第一行上。

对于应用程序安全沙箱中的 AIR 内容,AIR 会忽略 ActionScript TextField 对象的 HTML 内容中的 img 标签。这是为了防止可能发生的仿冒攻击,

斜体标签 <i> 标签以斜体形式显示标签中的文本。斜体必须可用于所使用的字体。 列表项标签 <li> 标签在所包含的文本前放置项目符号。注意:因为 Flash Player 和 AIR 无法识别有序和无序列表标签(<ol><ul>),所以这些标签无法修改列表的呈现方式。所有列表都是无序的,所有列表项都使用项目符号。 段落标签 <p> 标签创建一个新段落。必须将文本字段设置为多行文本字段才能使用此标签。<p> 标签支持以下属性:
  • align:指定段落内文本的对齐方式;有效值为 leftrightjustifycenter
  • class:指定 flash.text.StyleSheet 对象定义的 CSS 样式类。
Span 标签 <span> 标签只可用于 CSS 文本样式。它支持以下属性:
  • class:指定 flash.text.StyleSheet 对象定义的 CSS 样式类。
文本格式标签

使用 <textformat> 标签可在文本字段中使用 TextFormat 类的段落格式设置属性的子集,其中包括行距、缩进、边距和 Tab 停靠位。您可以将 <textformat> 标签与内置 HTML 标签结合使用。

<textformat> 标签具有以下属性:

  • blockindent:指定块缩进(以点为单位);对应于 TextFormat.blockIndent
  • indent:指定从左边距到段落中第一个字符的缩进;对应于 TextFormat.indent。正数和负数均可以接受。
  • leading:指定行与行之间的前导量(垂直间距);对应于 TextFormat.leading。正数和负数均可以接受。
  • leftmargin:指定段落的左边距(以点为单位);对应于 TextFormat.leftMargin
  • rightmargin:指定段落的右边距(以点为单位);对应于 TextFormat.rightMargin
  • tabstops:将自定义 Tab 停靠位指定为一个非负整数的数组;对应于 TextFormat.tabStops
下划线标签 <u> 标签为标签文本添加下划线。

Flash Player 和 AIR 支持以下 HTML 实体:

实体 说明 &amp;lt; <(小于) &amp;gt; >(大于) &amp;amp; &(和) &amp;quot; "(双引号) &amp;apos; '(撇号,单引号)

Flash Player 和 AIR 还支持显式字符代码,如 &#38;(ASCII 和号)和 &#x20AC;(Unicode € 符号)。

下例创建一个名为 tf1 的 TextField,并将 HTML 格式的字符串赋给其 text 属性。当跟踪其 htmlText 属性时,输出为 HTML 格式的字符串,带有由 Flash Player 自动添加的其他标签(如 <P> 和 <FONT>)。当跟踪 text 属性的值时,将显示不带 HTML 标签的无格式字符串。

为了进行比较,我们对另一个名为 tf2 的 TextField 对象执行了同样的步骤,并在设置 tf2htmlText 属性之前将 StyleSheet 对象赋给它的 styleSheet 属性。在这种情况下,当跟踪 htmlText 属性时,它只包括最初赋给 htmlText 属性的 HTML 文本,说明 Flash Player 没有添加其他标签。

package { import flash.display.Sprite; import flash.text.StyleSheet; import flash.text.TextField; public class TextField_text extends Sprite { public function TextField_text() { var tf1:TextField = createCustomTextField(10, 10, 400, 22); tf1.htmlText = "<b>Lorem ipsum dolor sit amet.</b>"; // htmlText: <P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">&lt;b&gt;Lorem ipsum dolor sit amet.&lt;/b&gt;</FONT></P> trace("htmlText: " + tf1.htmlText); // text: Lorem ipsum dolor sit amet. trace("text: " + tf1.text); var tf2:TextField = createCustomTextField(10, 50, 400, 22); tf2.styleSheet = new StyleSheet(); tf2.htmlText = "<b>Lorem ipsum dolor sit amet.</b>"; // htmlText: <b>Lorem ipsum dolor sit amet.</b> trace("htmlText: " + tf2.htmlText); // text: Lorem ipsum dolor sit amet. trace("text: " + tf2.text); } private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.width = width; result.height = height; addChild(result); return result; } } }
flash.text.TextField.textflash.text.StyleSheetflash.events.TextEvent
length 文本字段中的字符数。int文本字段中的字符数。 文本字段中的字符数。如 tab (\t) 之类的字符视为一个字符。 maxChars 文本字段中最多可包含的字符数(即用户输入的字符数)。int0 文本字段可以包含的最多字符数。 文本字段中最多可包含的字符数(即用户输入的字符数)。脚本可以插入比 maxChars 允许的字符数更多的文本;maxChars 属性仅表示用户可以输入多少文本。如果此属性的值为 0,则用户可以输入无限数量的文本。 maxScrollH scrollH 的最大值。intscrollH 的最大值。 scrollH 的最大值。 flash.text.TextField.scrollHmaxScrollV scrollV 的最大值。intscrollV 的最大值。 scrollV 的最大值。 flash.text.TextField.scrollVmouseWheelEnabled 一个布尔值,表示当用户单击某个文本字段并滚动鼠标滚轮时,Flash Player 是否自动滚动多行文本字段。Boolean表示 Flash Player 是否自动滚动多行文本字段。 一个布尔值,表示当用户单击某个文本字段并滚动鼠标滚轮时,Flash Player 是否自动滚动多行文本字段。默认情况下,此值为 true。如果您想让文本字段在用户滚动鼠标滚轮时不随之滚动,或要实现您自己的文本字段滚动方式,可以使用此属性。 multiline 表示字段是否为多行文本字段。Booleanfalse 表示文本字段是否为多行文本字段。 表示字段是否为多行文本字段。如果值为 true,则文本字段为多行文本字段;如果值为 false,则文本字段为单行文本字段。在类型为 TextFieldType.INPUT 的字段中,multiline 值将确定 Enter 键是否创建新行(如果值为 false,则将忽略 Enter 键)。如果将文本粘贴到其 multiline 值为 falseTextField 中,则文本中将除去新行。 numLinesnumLines 定义多行文本字段中的文本行数。int定义多行文本字段中的文本行数。 定义多行文本字段中的文本行数。如果 wordWrap 属性设置为 true,则在文本自动换行时会增加行数。 multilinewordWraprestrict 表示用户可输入到文本字段中的字符集。Stringnull 用户可以输入到文本字段中的字符集。 表示用户可输入到文本字段中的字符集。如果 restrict 属性的值为 null,则可以输入任何字符。如果 restrict 属性的值为空字符串,则不能输入任何字符。如果 restrict 属性的值为一串字符,则只能在文本字段中输入该字符串中的字符。从左向右扫描该字符串。可以使用连字符 (-) 指定一个范围。只限制用户交互;脚本可将任何文本放入文本字段中。此属性不与属性检查器中的“嵌入字体”选项同步。

如果字符串以尖号 (^) 开头,则先接受所有字符,然后从接受字符集中排除字符串中 ^ 之后的字符。如果字符串不以尖号 (^) 开头,则最初不接受任何字符,然后将字符串中的字符包括在接受字符集中。

下例仅允许在文本字段中输入大写字符、空格和数字:

     my_txt.restrict = "A-Z 0-9";
     

下例包含除小写字母之外的所有字符:

     my_txt.restrict = "^a-z";
     

可以使用反斜杠输入 ^ 或 - 的本义。认可的反斜杠序列为 \-、\^ 或 \\。反斜杠在字符串中必须是一个本义字符,因此在 ActionScript 中指定时必须使用两个反斜杠。例如,下面的代码只包含短划线 (-) 和尖号 (^):

     my_txt.restrict = "\\-\\^";
     

可在字符串中的任何位置使用 ^,以在包含字符与排除字符之间进行切换。下面的代码只包含除大写字母 Q 之外的大写字母:

     my_txt.restrict = "A-Z^Q";
     

可以使用 \u 转义序列构造 restrict 字符串。下面的代码只包含从 ASCII 32(空格)到 ASCII 126(代字号)之间的字符。

     my_txt.restrict = "\u0020-\u007E";
     
scrollH 当前水平滚动位置。int当前水平滚动位置。 当前水平滚动位置。如果 scrollH 属性为 0,则不能水平滚动文本。此属性值是一个以像素为单位表示水平位置的整数。

水平滚动的单位是像素,而垂直滚动的单位是行。水平滚动以像素计量是因为您通常使用的大多数字体都是按比例隔开的;这意味着字符可以有不同的宽度。Flash Player 按行进行垂直滚动是因为用户通常希望看到完整的一行文本,而不是一行的局部。即使一行中包含多种字体,行的高度也会调整到与使用的最大字体相适合。

注意: scrollH 属性是从 0 开始的,不像 scrollV 垂直滚动属性是从 1 开始的。

flash.text.TextField.maxScrollHflash.text.TextField.scrollV
scrollV 文本在文本字段中的垂直位置。int文本在文本字段中的垂直位置。 文本在文本字段中的垂直位置。scrollV 属性可帮助用户定位到长篇文章的特定段落,还可用于创建滚动文本字段。

垂直滚动的单位是行,而水平滚动的单位是像素。如果显示的第一行是文本字段中的第一行,则 scrollV 设置为 1(而非 0)。水平滚动以像素计量是因为大多数字体都是按比例隔开的;这意味着字符可以有不同的宽度。Flash 按行进行垂直滚动是因为用户通常希望看到完整的一行文本,而不是一行的局部。即使一行上有多种字体,行的高度也会调整到与使用的最大字体相适合。

flash.text.TextField.scrollHflash.text.TextField.maxScrollV
selectable 一个布尔值,表示文本字段是否可选。Booleantrue 表示文本字段是否可选。 一个布尔值,表示文本字段是否可选。值 true 表示文本可选。selectable 属性控制文本字段是否可选,而不控制文本字段是否可编辑。动态文本字段即使不可编辑,它也可能是可选的。如果动态文本字段是不可选的,则用户不能选择其中的文本。

如果 selectable 设置为 false,则文本字段中的文本不响应来自鼠标或键盘的选择命令,并且不能使用“复制”命令复制文本。如果 selectable 设置为 true,则可以使用鼠标或键盘选择文本字段中的文本,并且可以使用“复制”命令复制文本。即使文本字段是动态文本字段而不是输入文本字段,您也可以用这种方式选择文本。

下面的示例创建两个动态文本字段:一个文本字段的 selectable 属性设置为 true,另一个文本字段的 selectable 属性设置为 false。在使用此示例时,请尝试用鼠标或键盘在这些字段中选择文本。 package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class selectableExample extends Sprite { public function selectableExample() { var tf1:TextField = createCustomTextField(10, 10); tf1.text="This text can be selected"; tf1.selectable=true; var tf2:TextField = createCustomTextField(10, 30); tf2.text="This text cannot be selected"; tf2.selectable=false; } private function createCustomTextField(x:Number, y:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.autoSize=TextFieldAutoSize.LEFT; addChild(result); return result; } } }
setSelection()selectionBeginIndexselectionEndIndexsetSelection()caretIndex
selectionBeginIndex 当前所选内容中第一个字符从零开始的字符索引值。int所选内容中第一个字符从零开始的索引值。 当前所选内容中第一个字符从零开始的字符索引值。例如,第一个字符的索引值是 0,第二个字符的索引值是 1,依此类推。如果未选定任何文本,此属性为 caretIndex 的值。 在此示例中,创建了一个 TextField 实例,并用文本填充该实例。分配了一个事件侦听器,以便在用户单击 TextField 时,调用 printCursorPosition 方法。在这种情况下,将输出 caretIndexselectionBeginIndexselectionEndIndex 属性的值。

运行此示例并尝试在 TextField 中单击以选择文本。然后在字段中单击,但不选择文本。如果在文本中单击但不进行选择,caretIndex 属性将指示在何处出现插入点,而 selectionBeginIndexselectionEndIndex 属性则等于 caretIndex 属性值。

package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.text.TextField; import flash.text.TextFieldType; public class TextField_caretIndex extends Sprite { public function TextField_caretIndex() { var tf:TextField = createCustomTextField(10, 10, 100, 100); tf.wordWrap = true; tf.type = TextFieldType.INPUT; tf.text = "Click in this text field. Compare the difference between clicking without selecting versus clicking and selecting text."; tf.addEventListener(MouseEvent.CLICK, printCursorPosition); } private function printCursorPosition(event:MouseEvent):void { var tf:TextField = TextField(event.target); trace("caretIndex:", tf.caretIndex); trace("selectionBeginIndex:", tf.selectionBeginIndex); trace("selectionEndIndex:", tf.selectionEndIndex); } private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.width = width; result.height = height; addChild(result); return result; } } }
selectableselectionEndIndexsetSelection()caretIndex
selectionEndIndex 当前所选内容中最后一个字符从零开始的字符索引值。int所选内容中最后一个字符从零开始的索引值。 当前所选内容中最后一个字符从零开始的字符索引值。例如,第一个字符的索引值是 0,第二个字符的索引值是 1,依此类推。如果未选定任何文本,此属性为 caretIndex 的值。 在此示例中,创建了一个 TextField 实例,并用文本填充该实例。分配了一个事件侦听器,以便在用户单击 TextField 时,调用 printCursorPosition 方法。在这种情况下,将输出 caretIndexselectionBeginIndexselectionEndIndex 属性的值。

运行此示例并尝试在 TextField 中单击以选择文本。然后在字段中单击,但不选择文本。如果在文本中单击但不进行选择,caretIndex 属性将指示在何处出现插入点,而 selectionBeginIndexselectionEndIndex 属性则等于 caretIndex 属性值。

package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.text.TextField; import flash.text.TextFieldType; public class TextField_caretIndex extends Sprite { public function TextField_caretIndex() { var tf:TextField = createCustomTextField(10, 10, 100, 100); tf.wordWrap = true; tf.type = TextFieldType.INPUT; tf.text = "Click in this text field. Compare the difference between clicking without selecting versus clicking and selecting text."; tf.addEventListener(MouseEvent.CLICK, printCursorPosition); } private function printCursorPosition(event:MouseEvent):void { var tf:TextField = TextField(event.target); trace("caretIndex:", tf.caretIndex); trace("selectionBeginIndex:", tf.selectionBeginIndex); trace("selectionEndIndex:", tf.selectionEndIndex); } private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.width = width; result.height = height; addChild(result); return result; } } }
selectableselectionBeginIndexsetSelection()caretIndex
sharpness 此文本字段中字型边缘的清晰度。Number0 字型边缘的清晰度。 此文本字段中字型边缘的清晰度。仅在文本字段的 flash.text.AntiAliasType 属性设置为 flash.text.AntiAliasType.ADVANCED 时才应用此属性。sharpness 的范围是从 -400 到 400 的一个数字。如果尝试将 sharpness 设置为该范围外的值,则 Flash 会将该属性设置为范围内最接近的值(-400 或 400)。 下面的示例显示更改 TextField 对象的 sharpness 属性所产生的效果。您需要嵌入字体并将 antiAliasType 属性设置为 ADVANCED package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.AntiAliasType; import flash.text.GridFitType; import flash.text.TextFormat; public class sharpnessExample extends Sprite { public function sharpnessExample() { var format1:TextFormat = new TextFormat(); format1.font="Arial"; format1.size=24; var lTxt:String = "The quick brown fox"; var tf1:TextField=createCustomTextField(0,lTxt,format1,-400); var tf2:TextField=createCustomTextField(30,lTxt,format1,0); var tf3:TextField=createCustomTextField(60,lTxt,format1,400); } private function createCustomTextField(y:Number,fldTxt:String,format:TextFormat,fldSharpness:Number):TextField { var result:TextField = new TextField(); result.y=y; result.text=fldTxt; result.embedFonts=true; result.autoSize=TextFieldAutoSize.LEFT; result.antiAliasType=AntiAliasType.ADVANCED; result.gridFitType=GridFitType.PIXEL; result.sharpness=fldSharpness; result..setTextFormat(format); addChild(result); return result; } } } flash.text.TextField.antiAliasTypeflash.text.AntiAliasTypestyleSheet 将样式表附加到文本字段。flash.text:StyleSheet将样式表附加到文本字段。 将样式表附加到文本字段。有关创建样式表的信息,请参阅 StyleSheet 类和《ActionScript 3.0 开发人员指南》

您可以随时更改与文本字段相关的样式表。如果更改使用中的样式表,会使用新的样式表重绘文本字段。您可以将样式表设置为 nullundefined 以删除此样式表。如果删除正在使用的样式表,则不使用样式表重绘文本字段。

注意:如果删除样式表,则 TextField.text TextField.htmlText 的内容都将体现先前由该样式表应用的格式。要保留不带格式的原始 TextField.htmlText 内容,请在删除样式表前将该值保存在变量中。

下面的示例定义一个简单的 StyleSheet 对象并为其分配一个包含 HTML 内容的文本字段。在设置内容之前设置 stylesheet 属性。 package { import flash.display.Sprite; import flash.text.TextField; import flash.text.StyleSheet; public class TextStylesheetExample extends Sprite { var myLabel:TextField = new TextField(); var labelText:String = "Hello world."; var newStyle:StyleSheet = new StyleSheet(); public function TextStylesheetExample() { var styleObj:Object = new Object(); styleObj.fontWeight = "bold"; styleObj.color = "#660066"; newStyle.setStyle(".defStyle", styleObj); myLabel.styleSheet=newStyle; myLabel.htmlText=labelText; addChild(myLabel); } } }
flash.text.StyleSheet
textColor 文本字段中文本的颜色(采用十六进制格式)。uint0 (0x000000) 文本字段中文本的颜色(采用十六进制格式)。 文本字段中文本的颜色(采用十六进制格式)。十六进制颜色系统使用六位数表示颜色值。每位数有 16 个可能的值或字符。字符范围从 0 到 9,然后从 A 到 F。例如,黑色是 0x000000;白色是 0xFFFFFF 下面的 ActionScript 创建一个 TextField 对象,并将其 textColor 属性更改为 red (0xFF0000)。 package { import flash.display.Sprite; import flash.text.TextField; public class TextField_textColor extends Sprite { public function TextField_textColor() { var tf:TextField = createCustomTextField(10, 10, 100, 300); tf.text = "This will be red text"; tf.textColor = 0xFF0000; } private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.width = width; result.height = height; addChild(result); return result; } } } textHeight 文本的高度,以像素为单位。Number文本的高度,以像素为单位。 文本的高度,以像素为单位。 下例创建一个 TextField 对象,并为其分配文本。trace 语句显示 textWidthtextHeight 属性的值。为了进行比较,还会显示 widthheight 属性。(请注意,看到的 textHeighttextWidth 值可能会有所不同,这取决于计算机上所用的字体)。 package { import flash.display.Sprite; import flash.text.TextField; public class TextField_textHeight extends Sprite { public function TextField_textHeight() { var tf:TextField = createCustomTextField(10, 10, 100, 150); tf.text = "Sample text"; trace("textWidth: " + tf.textWidth); // textWidth: 55.75 trace("textHeight: " + tf.textHeight); // textHeight: 13.450000000000001 trace("width: " + tf.width); // width: 100 trace("height: " + tf.height); // height: 150 } private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.width = width; result.height = height; result.border = true; result.background = true; addChild(result); return result; } } } flash.text.TextField.textWidthtextInteractionMode interaction mode 属性的默认值为 TextInteractionMode.NORMAL。String 交互模式属性,默认值为 TextInteractionMode.NORMAL。在移动平台上,标准模式意味着可滚动文本,但不能选择文本。用户可以通过文本字段上的内置上下文菜单切换到可选择的模式。在台式机上,标准模式意味着文本处于可滚动模式以及选择模式。 textWidth 文本的宽度,以像素为单位。Number文本的宽度,以像素为单位。 文本的宽度,以像素为单位。 下例创建一个 TextField 对象,并为其分配文本。trace 语句显示 textWidthtextHeight 属性的值。为了进行比较,还会显示 widthheight 属性。(请注意,看到的 textHeighttextWidth 值可能会有所不同,这取决于计算机上所用的字体)。 package { import flash.display.Sprite; import flash.text.TextField; public class TextField_textHeight extends Sprite { public function TextField_textHeight() { var tf:TextField = createCustomTextField(10, 10, 100, 150); tf.text = "Sample text"; trace("textWidth: " + tf.textWidth); // textWidth: 55.75 trace("textHeight: " + tf.textHeight); // textHeight: 13.450000000000001 trace("width: " + tf.width); // width: 100 trace("height: " + tf.height); // height: 150 } private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.width = width; result.height = height; result.border = true; result.background = true; addChild(result); return result; } } } flash.text.TextField.textHeighttext 作为文本字段中当前文本的字符串。String作为文本字段中当前文本的字符串。 作为文本字段中当前文本的字符串。各行之间用回车符('\r',即 ASCII 13)分隔。此属性包含文本字段中的无格式文本,不带 HTML 标签。

要获取 HTML 形式的文本,请使用 htmlText 属性。

下例创建一个名为 tf1 的 TextField,并将 HTML 格式的字符串赋给其 text 属性。当跟踪其 htmlText 属性时,输出为 HTML 格式的字符串,带有由 Flash Player 自动添加的其他标签(如 <P> 和 <FONT>)。当跟踪 text 属性的值时,将显示不带 HTML 标签的无格式字符串。

为了进行比较,我们对另一个名为 tf2 的 TextField 对象执行了同样的步骤,并在设置 tf2htmlText 属性之前将 StyleSheet 对象赋给它的 styleSheet 属性。在这种情况下,当跟踪 htmlText 属性时,它只包括最初赋给 htmlText 属性的 HTML 文本,说明 Flash Player 没有添加其他标签。

package { import flash.display.Sprite; import flash.text.StyleSheet; import flash.text.TextField; public class TextField_text extends Sprite { public function TextField_text() { var tf1:TextField = createCustomTextField(10, 10, 400, 22); tf1.htmlText = "<b>Lorem ipsum dolor sit amet.</b>"; // htmlText: <P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">&lt;b&gt;Lorem ipsum dolor sit amet.&lt;/b&gt;</FONT></P> trace("htmlText: " + tf1.htmlText); // text: Lorem ipsum dolor sit amet. trace("text: " + tf1.text); var tf2:TextField = createCustomTextField(10, 50, 400, 22); tf2.styleSheet = new StyleSheet(); tf2.htmlText = "<b>Lorem ipsum dolor sit amet.</b>"; // htmlText: <b>Lorem ipsum dolor sit amet.</b> trace("htmlText: " + tf2.htmlText); // text: Lorem ipsum dolor sit amet. trace("text: " + tf2.text); } private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.width = width; result.height = height; addChild(result); return result; } } }
flash.text.TextField.htmlText
thickness 此文本字段中字型边缘的粗细。Number0 字型边缘的粗细。 此文本字段中字型边缘的粗细。仅在 flash.text.AntiAliasType 设置为 flash.text.AntiAliasType.ADVANCED 时才可应用此属性。

thickness 的范围是从 -200 到 200 的一个数字。如果要尝试将 thickness 设置为该范围外的值,则该属性会设置为范围内最接近的值(-200 或 200)。

下面的示例显示更改 TextField 对象的 thickness 属性所产生的效果。您需要嵌入字体并将 antiAliasType 属性设置为 ADVANCED package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.AntiAliasType; import flash.text.GridFitType; import flash.text.TextFormat; public class thicknessExample extends Sprite { public function thicknessExample() { var format1:TextFormat = new TextFormat(); format1.font="Arial"; format1.size=24; var lTxt:String = "The quick brown fox"; var tf1:TextField=createCustomTextField(0,lTxt,format1,-200); var tf2:TextField=createCustomTextField(30,lTxt,format1,0); var tf3:TextField=createCustomTextField(60,lTxt,format1,200); } private function createCustomTextField(y:Number,fldTxt:String,format:TextFormat,fldThickness:Number):TextField { var result:TextField = new TextField(); result.y=y; result.text=fldTxt; result.embedFonts=true; result.autoSize=TextFieldAutoSize.LEFT; result.antiAliasType=AntiAliasType.ADVANCED; result.gridFitType=GridFitType.PIXEL; result.thickness=fldThickness; result.setTextFormat(format); addChild(result); return result; } } }
flash.text.TextField.antiAliasTypeflash.text.AntiAliasType
type 文本字段的类型。String指定的 type 不是 flash.text.TextFieldType 的成员。 ArgumentErrorArgumentErrordynamic 文本字段的类型。 文本字段的类型。以下 TextFieldType 常量中的任一个:TextFieldType.DYNAMIC(指定用户无法编辑的动态文本字段),或 TextFieldType.INPUT(指定用户可以编辑的输入文本字段)。 下例创建两个文本字段:tfDynamictfInput。文本输入到两个文本字段中。但是,tfDynamic 将其 type 属性设置为 TextFieldType.DYNAMIC,而 tfInput 将其 type 属性设置为 TextFieldType.INPUT,所以用户可以修改 tfInput 中的文本,但只能查看 tfDynamic 中的文本。 package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldType; public class TextField_type extends Sprite { public function TextField_type() { var tfDynamic:TextField = createCustomTextField(10, 10, 100, 20); tfDynamic.type = TextFieldType.DYNAMIC; tfDynamic.text = "hello"; var tfInput:TextField = createCustomTextField(10, 45, 100, 20); tfInput.type = TextFieldType.INPUT; tfInput.text = "world"; } private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.width = width; result.height = height; result.background = true; result.border = true; addChild(result); return result; } } } flash.text.TextFieldTypeuseRichTextClipboard 指定在复制和粘贴文本时是否同时复制和粘贴其格式。Boolean 指定在复制和粘贴文本时是否同时复制和粘贴其格式。如果设置为 true,则在文本字段之间复制和粘贴时,Flash Player 也将复制和粘贴格式设置(例如,对齐方式、粗体和斜体)。复制和粘贴过程中的原始和目标文本字段必须已将 useRichTextClipboard 设置为 true。默认值为 false 此示例创建一个输入文本字段 (tf1) 和两个动态文本字段(tf2tf3)。代码为每个动态文本字段分配一个 TextFormat 对象(Courier Bold 字体)。tf2 文本字段的 useRichTextClipboard 属性设置为 falsetf3 文本字段的 useRichTextClipboard 属性设置为 true。在从 tf2 文本字段复制文本并将其粘贴到 tf1 文本字段中时,粘贴的文本不包括格式。在从 tf3 文本字段(useRichTextClipboard 设置为 true)复制文本并将其粘贴到 tf1 文本字段中时,粘贴的文本包括格式。 package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldType; import flash.text.TextFormat; public class useRichTextClipboard extends Sprite { public function useRichTextClipboard() { var format1:TextFormat = new TextFormat(); format1.font="Courier"; format1.bold=true; var tf1:TextField = createCustomTextField(10, 10, 200, 20); tf1.type=TextFieldType.INPUT; tf1.useRichTextClipboard=true; var tf2:TextField = createCustomTextField(220, 10, 200, 20); tf2.text="1.Text loses format"; tf2.setTextFormat(format1); tf2.useRichTextClipboard=false; var tf3:TextField = createCustomTextField(220, 50, 200, 20); tf3.text="2.Text includes format"; tf3.setTextFormat(format1); tf3.useRichTextClipboard=true; } private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.width = width; result.height = height; result.background = true; result.border = true; addChild(result); return result; } } } wordWrap 一个布尔值,表示文本字段是否自动换行。Boolean表示文本字段是否自动换行。 一个布尔值,表示文本字段是否自动换行。如果 wordWrap 的值为 true,则该文本字段自动换行;如果值为 false,则该文本字段不自动换行。默认值为 false 下面显示将 wordWrap 属性设置为 true 和将其设置为 false 之间的区别。创建两个 TextField 实例,它们的内容对于它们的宽度来说太大。第一个(名为 tfWrap)的 wordWrap 属性设置为 true;第二个 (tfNoWrap) 的此属性设置为 false package { import flash.display.Sprite; import flash.text.TextField; public class TextField_wordWrap extends Sprite { public function TextField_wordWrap() { var tfWrap:TextField = createCustomTextField(10, 10, 100, 100); tfWrap.wordWrap = true; tfWrap.text = "(wordWrap = true):\nThis is very long text that will certainly extend beyond the width of this text field"; var tfNoWrap:TextField = createCustomTextField(10, 150, 100, 100); tfNoWrap.wordWrap = false; tfNoWrap.text = "(wordWrap = false):\nThis is very long text that will certainly extend beyond the width of this text field"; } private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField { var result:TextField = new TextField(); result.x = x; result.y = y; result.width = width; result.height = height; result.background = true; result.border = true; addChild(result); return result; } } }
TextFormat TextFormat 类描述字符格式设置信息。创建文本字段的文本格式设置。 Object TextFormat 类描述字符格式设置信息。使用 TextFormat 类可以为文本字段创建特定的文本格式。您可以将文本格式应用于静态文本字段和动态文本字段。TextFormat 类的属性适用于设备字体和嵌入字体。不过,对于嵌入字体,粗体和斜体文本实际上需要特定字体。如果要使用嵌入字体来显示粗体或斜体文本,则需要嵌入该字体的粗体和斜体变体。

必须先使用构造函数 new TextFormat() 创建 TextFormat 对象,才能设置该构造函数的属性。在使用 TextField.defaultTextFormat 属性或 TextField.setTextFormat() 方法对文本字段应用 TextFormat 对象时,将只应用该对象的已定义的属性。在向 TextField 添加文本前,请使用 TextField.defaultTextFormat 属性应用格式,在向 the TextField 添加文本后,请使用 setTextFormat() 方法添加格式。默认情况下,TextFormat 属性为 null,因为如果没有提供属性值,Flash Player 将使用自己的默认格式设置。Flash Player 用于各个属性的默认格式(如果属性的值为 null)如下所示:

align = "left"blockIndent = 0bold = falsebullet = falsecolor = 0x000000font = "Times New Roman"(在 Mac OS X 上,默认字体为 Times)indent = 0italic = falsekerning = falseleading = 0leftMargin = 0letterSpacing = 0rightMargin = 0size = 12tabStops = [] (empty array)target = ""(empty string)underline = falseurl = ""(empty string)

各个属性的默认格式设置在各自的说明中也有所描述。

下例创建 TextFieldExample 类来显示默认位置 (x = 0, y = 0) 的文本消息。这是使用以下步骤完成的:
  1. 创建了 TextField 类型的 label 属性。
  2. 类构造函数调用函数 configureLabel()
  3. configureLabel() 函数首先创建一个新的 TextField 对象并将其赋给 label 然后将其参数设置为
    • 左对齐文本字段
    • 启用背景填充
    • 启用边框。
  4. 接下来,configureLabel() 将创建本地变量 format,并将其赋给新 TextFormat 实例,将其参数设置为:
    • 字体类型 = 宋体
    • 字体颜色 = 纯红色
    • 字体大小 = 10
    • 字体下划线 = true。
  5. 标签的 defaultTextFormat 属性设置为 format,而 label 实例将添加到显示列表中,此显示列表最初在舞台上显示不包含文本的文本字段(例如具有白色背景的小框)。
  6. 最后(返回构造函数),通过调用以下 setLabel(),标签的文本会设置为在坐标 x = 0,y = 0 处显示“Hello World and welcome to the show”。
package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; public class TextFormatExample extends Sprite { private var label:TextField; public function TextFormatExample() { configureLabel(); setLabel("Hello World and welcome to the show"); } public function setLabel(str:String):void { label.text = str; } private function configureLabel():void { label = new TextField(); label.autoSize = TextFieldAutoSize.LEFT; label.background = true; label.border = true; var format:TextFormat = new TextFormat(); format.font = "Verdana"; format.color = 0xFF0000; format.size = 10; format.underline = true; label.defaultTextFormat = format; addChild(label); } } }
flash.text.TextField.setTextFormat()flash.text.TextField.defaultTextFormatflash.text.TextField.getTextFormat()TextFormat 创建一个具有指定属性的 TextFormat 对象。fontStringnull以字符串形式表示的文本字体名称。 sizeObjectnull一个表示大小(以像素为单位)的整数。 colorObjectnull使用此文本格式的文本的颜色。包含三个 8 位 RGB 颜色成分的数字;例如,0xFF0000 为红色,0x00FF00 为绿色。 boldObjectnull一个布尔值,表示文本是否为粗体字。 italicObjectnull一个布尔值,表示文本是否为斜体。 underlineObjectnull一个布尔值,表示文本是否带有下划线。 urlStringnull使用此文本格式的文本超链接到的 URL。如果 url 为空字符串,则表示文本没有超链接。 targetStringnull显示超链接的目标窗口。如果目标窗口为空字符串,则文本显示在默认目标窗口 _self 中。如果 url 参数设置为空字符串或值 null,虽然您可以获取或设置此属性,但该属性不起作用。 alignStringnull段落的对齐方式,作为 TextFormatAlign 值。 leftMarginObjectnull表示段落的左边距,以像素为单位。 rightMarginObjectnull表示段落的右边距,以像素为单位。 indentObjectnull一个整数,表示从左边距到段落中第一个字符的缩进。 leadingObjectnull一个数字,表示行与行之间的前导垂直间距量。 创建一个具有指定属性的 TextFormat 对象。然后可更改 TextFormat 对象的属性以更改文本字段的格式设置。

任何参数都可设置为 null 以表示该参数未定义。所有参数都是可选的;任何省略的参数都被视为 null

在下面的示例中,用户可以从应用于另一个文本字段内容的列表中选择不同的文本格式选项。如果用户单击文本字段的内容,该格式将恢复为默认(原始)格式。

formatTextField 文本字段将在单独的行中列出所有 TextField 类属性选项(kerning 除外)。当用户单击 formatTextField 文本字段中的某一行时,将触发 formatTextFieldClickHandler() 方法。

formatTextFieldClickHandler() 方法调用 TextField.getLineIndexAtPoint() 方法以获取所单击的行的索引,然后调用 TextField.getLineText() 方法以获取行内容。switch 语句将检查该行内容,并相应地设置 newformat TextFormat 对象的属性。然后,setTextFormat() 方法将 contentTextField 文本字段的文本格式设置为新格式。通过单击不同的 formatTextField 行,用户可以将一个不同的格式应用于 contentTextField 文本字段。(Tab 设置是一个数组,它为行中的每个 Tab 定义了单独的 Tab 停靠位。) 如果选择了 urltarget 行,用户必须单击 contentTextField 文本字段才能激活链接并显示目标 URL(Flex 主页)的内容。target 属性的默认值为“_self”,这意味着,如果用户选择了 url 行,则会在当前窗口中显示该内容。要使 target 属性起作用,必须已经在 url 属性中设置了 URL。

如果用户单击 contentTextField 文本字段,将触发 contentTextFieldClickHandler() 方法,它将该字段的格式以及 newFormat TextFormat 对象设置为文本字段的默认(原始)格式。这将清除用户所做的所有格式更改。

package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFieldAutoSize; import flash.events.MouseEvent; import flash.text.TextFormatAlign; public class TextFormat_constructorExample extends Sprite { private var contentTextField:TextField = new TextField(); private var formatTextField:TextField = new TextField(); private var newFormat:TextFormat = new TextFormat(); public function TextFormat_constructorExample() { contentTextField.x = 10; contentTextField.y = 10; contentTextField.background = true; contentTextField.border = true; contentTextField.multiline = true; contentTextField.wordWrap = true; contentTextField.selectable = false; contentTextField.width = 250; contentTextField.height = 120; contentTextField.htmlText = "<p>The TextFormat class represents character formatting " + "information. Use the TextFormat class to create specific text formatting " + "for text fields." + " </p><br>" + "\tTab One" + "\tTab Two<br>"; formatTextField.x = 10; formatTextField.y = 140; formatTextField.background = true; formatTextField.border = true; formatTextField.autoSize = TextFieldAutoSize.LEFT; formatTextField.text = "align: right\n" + "blockIndent: 10 pixels\n" + "bold:\n" + "bullet:\n" + "color: red\n" + "font: Arial\n" + "indent: 20 pixels\n" + "italic:\n" + "leading: 5 spaces\n" + "leftMargin: 20 pixels\n" + "letterSpacing: 4 pixels\n" + "rightMargin: 20 pixels\n" + "size: 16 point\n" + "target: new window\n" + "tabStops: 50 and 150 pixel\n" + "underline:\n" + "url: Adobe Flex page\n"; formatTextField.addEventListener(MouseEvent.CLICK, formatTextFieldClickHandler); contentTextField.addEventListener(MouseEvent.CLICK, contentTextFieldClickHandler); this.addChild(contentTextField); this.addChild(formatTextField); } private function formatTextFieldClickHandler(e:MouseEvent):void { var value:String= ""; var i:uint = 0; var index:int = formatTextField.getLineIndexAtPoint(e.localX, e.localY); var line:String = formatTextField.getLineText(index);; line = line.substr(0, (line.indexOf(":"))); switch(line) { case "align": newFormat.align = TextFormatAlign.RIGHT; break; case "blockIndent": newFormat.blockIndent = 10; break; case "bold": newFormat.bold = true; break; case "bullet": newFormat.bullet = true; break; case "color": newFormat.color = 0xFF0000; break; case "font": newFormat.font = "Arial"; break; case "indent": newFormat.indent = 20; break; case "italic": newFormat.italic = true; break; case "leading": newFormat.leading = 5; break; case "leftMargin": newFormat.leftMargin = 20; break; case "letterSpacing": newFormat.letterSpacing = 4; break; case "rightMargin": newFormat.rightMargin = 20; break; case "size": newFormat.size = 16; break; case "tabStops": newFormat.tabStops = [50, 150]; break; case "target": newFormat.url = "http://www.adobe.com/products/flex/"; newFormat.target = "_blank"; break; case "underline": newFormat.underline = true; break; case "url": newFormat.url = "http://www.adobe.com/products/flex/"; break; } contentTextField.setTextFormat(newFormat); } private function contentTextFieldClickHandler(e:MouseEvent):void { contentTextField.setTextFormat(contentTextField.defaultTextFormat); newFormat = contentTextField.defaultTextFormat; } } }
align 表示段落的对齐方式。String指定的 align 不是 flash.text.TextFormatAlign 的成员。 ArgumentErrorArgumentErrorTextFormatAlign.LEFT 表示段落的对齐方式。有效值为 TextFormatAlign 常数。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 flash.text.TextFormatAlignblockIndent 表示块缩进,以像素为单位。Object 表示块缩进,以像素为单位。块缩进应用于整个文本块,即文本的所有行。而普通缩进 (TextFormat.indent) 只影响各段的第一行。如果此属性为 null,则 TextFormat 对象不指定块缩进(块缩进为 0)。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 bold 指定文本是否为粗体字。Object 指定文本是否为粗体字。默认值为 null,这意味着不使用粗体字。如果值为 true,则文本为粗体字。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 bullet 表示文本为带项目符号的列表的一部分。Object 表示文本为带项目符号的列表的一部分。在带项目符号的列表中,文本的各段都是缩进的。项目符号显示在各段第一行的左侧。默认值为 null,这意味着不使用带项目符号的列表。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 color 表示文本的颜色。Object 表示文本的颜色。包含三个 8 位 RGB 颜色成分的数字;例如,0xFF0000 为红色,0x00FF00 为绿色。默认值为 null,这意味着 Flash Player 使用黑色 (0x000000)。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 font 使用此文本格式的文本的字体名称,以字符串形式表示。String 使用此文本格式的文本的字体名称,以字符串形式表示。默认值为 null,这意味着 Flash Player 对文本使用 Times New Roman 字体。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 indent 表示从左边距到段落中第一个字符的缩进。Object 表示从左边距到段落中第一个字符的缩进。默认值为 null,它表示不使用缩进。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 flash.text.TextFormat.blockIndentitalic 表示使用此文本格式的文本是否为斜体。Object 表示使用此文本格式的文本是否为斜体。默认值为 null,这意味着不使用斜体。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 kerning 一个布尔值,表示是启用 (true) 还是禁用 (false) 字距调整。Object 一个布尔值,表示是启用 (true) 还是禁用 (false) 字距调整。通过字距调整可为了提高可读性而调整某些字符对之间的像素,并且只在需要时(如使用大字体标题时)使用字距调整。仅对嵌入字体支持字距调整。

某些字体(如宋体)和等宽字体(如 Courier New)不支持字距调整。

默认值为 null,这意味着没有启用字距调整。

leading 一个整数,表示行与行之间的垂直间距(称为前导)量。Object 一个整数,表示行与行之间的垂直间距(称为前导)量。默认值为 null,它表示使用的前导量为 0。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 leftMargin 段落的左边距,以像素为单位。Object 段落的左边距,以像素为单位。默认值为 null,它表示左边距为 0 像素。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 letterSpacing 一个数字,表示在所有字符之间均匀分配的空间量。Object 一个数字,表示在所有字符之间均匀分配的空间量。该值指定在每个字符之后添加到进距的像素数。默认值为 null,这意味着使用的字母间距为 0 个像素。可以使用十进制值,如 1.75有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 rightMargin 段落的右边距,以像素为单位。Object 段落的右边距,以像素为单位。默认值为 null,它表示右边距为 0 像素。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 size 使用此文本格式的文本的大小(以像素为单位)。Object 使用此文本格式的文本的大小(以像素为单位)。默认值为 null,这意味着使用的大小为 12。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 tabStops 将自定义 Tab 停靠位指定为一个非负整数的数组。Array 将自定义 Tab 停靠位指定为一个非负整数的数组。指定每个 Tab 停靠位,以像素为单位。如果没有指定自定义 Tab 停靠位 (null),则默认的 Tab 停靠位为 4(平均字符宽度)。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 target 表示显示超链接的目标窗口。String 表示显示超链接的目标窗口。如果目标窗口为空字符串,则文本显示在默认目标窗口 _self 中。可以选择自定义名称或以下四种名称中的一个:_self 指定当前窗口中的当前帧,_blank 指定一个新窗口,_parent 指定当前帧的父级,_top 指定当前窗口中的顶级帧。如果 TextFormat.url 属性是空字符串或 null,则虽然您可以获取或设置此属性,但该属性不起作用。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 flash.text.TextFormat.urlunderline 表示使用此文本格式的文本是带下划线 (true) 还是不带下划线 (false)。Object 表示使用此文本格式的文本是带下划线 (true) 还是不带下划线 (false)。此下划线类似于用 <U> 标签生成的下划线,但后者不是真正的下划线,因为它不能正确地跳过下行字符。默认值为 null,它表示不使用下划线。 有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。 url 表示使用此文本格式的文本的目标 URL。String 表示使用此文本格式的文本的目标 URL。如果 url 属性为空字符串,则文本没有超链接。默认值为 null,它表示文本没有超链接。

注意:必须使用 htmlText 属性对具有指定文本格式的文本进行设置以使超链接起作用。

有关如何使用此属性的说明,请参阅 TextFormat() 构造函数示例。
flash.text.TextField.htmlText
TextDisplayMode TextDisplayMode 类包含控制高级消除锯齿系统的子像素锯齿消除的值。Object TextDisplayMode 类包含控制高级消除锯齿系统的子像素锯齿消除的值。 flash.text.TextRenderer.displayModeCRT 强制 Flash Player 显示灰度消除锯齿。crtString 强制 Flash Player 显示灰度消除锯齿。虽然此设置可避免显示文本颜色,但一些用户可能认为它看起来很模糊。 DEFAULT 允许 Flash Player 选择 LCD 或 CRT 模式。defaultString 允许 Flash Player 选择 LCD 或 CRT 模式。 LCD 强制 Flash Player 使用 LCD 子像素消除锯齿。lcdString 强制 Flash Player 使用 LCD 子像素消除锯齿。根据字体和硬件,此设置可产生分辨率很高的文本或文本颜色。 AntiAliasType AntiAliasType 类为 flash.text.TextField 类中的消除锯齿提供值。Object AntiAliasType 类为 flash.text.TextField 类中的消除锯齿提供值。 flash.text.TextFieldADVANCED 将消除锯齿功能设置为高级消除锯齿功能。advancedString 将消除锯齿功能设置为高级消除锯齿功能。使用高级消除锯齿功能时,即使字号很小,字型也能达到极高的呈现品质。它最适合在具有大量小字号文本的应用程序中使用。建议不要对非常大(大于 48 点)的字体使用高级消除锯齿功能。该常数用于 TextField 类中的 antiAliasType 属性。使用语法 AntiAliasType.ADVANCEDflash.text.TextField.antiAliasTypeNORMAL 将消除锯齿功能设置为 Flash Player 7 和更低版本中使用的消除锯齿功能。Bob Pappas normalString 将消除锯齿功能设置为 Flash Player 7 和更低版本中使用的消除锯齿功能。建议在文本不多的应用程序使用此设置。该常数用于 TextField 类中的 antiAliasType 属性。使用语法 AntiAliasType.NORMALflash.text.TextField.antiAliasTypeFontType FontType 类包含 Font 类的 fontType 属性的枚举常量 "embedded" 和 "device"。Object FontType 类包含 Font 类的 fontType 属性的枚举常量 "embedded""device"flash.text.Font.fontTypeDEVICE 表示这是一种设备字体。deviceString 表示这是一种设备字体。SWF 文件使用系统中安装的字体来呈现字体。

使用设备字体可减小影片大小,因为字体数据不包括在文件中。设备字体通常适合以小点值显示文本,因为消除锯齿的文本在使用小字号时可能显得模糊。设备字体还适合大文本块,如滚动文本。

使用设备字体的文本字段在不同系统和平台上的显示可能有所不同,因为文本字段是使用系统中安装的字体来呈现的。由于同样的原因,设备字体未消除锯齿,并且在以大点值显示时可能出现锯齿。

TextField.embedFontsflash.text.engine.FontDescription.fontLookup
EMBEDDED_CFF 表示这是一种嵌入 CFF 字体。embeddedCFFString 表示这是一种嵌入 CFF 字体。字体轮廓和 OpenType 表的一个子集已嵌入到已发布的 SWF 文件中。

使用嵌入 CFF 字体的文本始终以选择的字体显示,而不管播放系统上是否安装了该字体。另外,Flash Player 始终对使用嵌入 CFF 字体的文本进行消除锯齿(平滑)处理。您可以使用 flash.text.engine.FontDescription.renderingModeflash.text.engine.FontDescription.cffHinting 属性来选择呈现模式和嵌入 CFF 字体的提示。

嵌入 CFF 字体的一个缺点是它们增加了 SWF 文件的大小。不过,嵌入 CFF 字体通常比普通的嵌入字体小 20% 到 30%。

类型为 EMBEDDED_CFF 的字体只能由 flash.text.engine 类使用。要求使用这种字体的 TextField 将无法呈现。

flash.text.engine.FontDescription.fontLookup
EMBEDDED 表示这是一种嵌入字体。embeddedString 表示这是一种嵌入字体。字体轮廓嵌入到已发布的 SWF 文件中。

使用嵌入字体的文本字段始终以选择的字体显示,不管该字体是否安装在播放系统上。另外,始终对使用嵌入字体的文本字段进行消除锯齿(平滑)处理。可以使用 TextField.antiAliasType 属性来选择所需的消除锯齿量。

嵌入字体的一个缺点是它们增大了 SWF 文件的大小。

类型为 EMBEDDED 的字体只能由 TextField 使用。如果表示 flash.text.engine 类使用这种字体,则这些类将使用备用的设备字体。

TextField.embedFonts
TextFormatAlign TextFormatAlign 类为 TextFormat 类中的文本对齐方式提供值。Object TextFormatAlign 类为 TextFormat 类中的文本对齐方式提供值。 flash.text.TextFormatCENTER 常数;在文本字段内将文本居中对齐。centerString 常数;在文本字段内将文本居中对齐。使用语法 TextFormatAlign.CENTERflash.text.TextFormat.alignJUSTIFY 常数;在文本字段内将文本两端对齐。justifyString 常数;在文本字段内将文本两端对齐。使用语法 TextFormatAlign.JUSTIFYflash.text.TextFormat.alignLEFT 常数;在文本字段内将文本左对齐。leftString 常数;在文本字段内将文本左对齐。使用语法 TextFormatAlign.LEFTflash.text.TextFormat.alignRIGHT 常数;在文本字段内将文本右对齐。rightString 常数;在文本字段内将文本右对齐。使用语法 TextFormatAlign.RIGHTflash.text.TextFormat.alignFont Font 类可用来管理 SWF 文件中的嵌入字体。Object Font 类可用来管理 SWF 文件中的嵌入字体。嵌入字体表示为 Font 类的子类。Font 类当前只适用于查找有关嵌入字体的信息,您无法使用此类来更改字体。无法单独使用 Font 类来加载外部字体,或创建 Font 对象的实例。Font 类用作抽象基类。 enumerateFonts 指定是否提供当前可用嵌入字体列表。一个作为 Font 对象数组的可用字体列表。 ArrayenumerateDeviceFontsBooleanfalse表示是否要将列表限制为仅当前可用的嵌入字体。如果设置为 true,则返回一个包括所有字体(设备字体和嵌入字体)的列表。如果设置为 false,则返回一个只包括嵌入字体的列表。 指定是否提供当前可用嵌入字体列表。 此示例首先调用静态方法 Font.enumerateFonts() 来获取包括所有设备字体和嵌入字体的列表。然后此示例按 fontName 属性对生成的 Array 的 Font 对象进行排序。

接下来,此示例显示如何调用 enumerateDeviceFonts 参数设置为 false 时的 Font.enumerateFonts() 方法。生成的 Array 只包括嵌入的 Font 对象。(如果在不包含任何嵌入字体的应用程序中运行此代码,则 embeddedFonts 数组将为空。)

import flash.text.Font; var allFonts:Array = Font.enumerateFonts(true); allFonts.sortOn("fontName", Array.CASEINSENSITIVE); var embeddedFonts:Array = Font.enumerateFonts(false); embeddedFonts.sortOn("fontName", Array.CASEINSENSITIVE);
hasGlyphs 指定能否使用当前指定的字体显示提供的字符串。如果可使用此字体完全显示指定的字符串,则值为 trueBooleanstrString要针对当前字体进行测试的字符串。 指定能否使用当前指定的字体显示提供的字符串。 registerFont 在全局字体列表中注册一个字体类。fontClass要添加到全局字体列表中的类。 在全局字体列表中注册一个字体类。 fontName 嵌入字体的名称。String 嵌入字体的名称。 以下示例说明了如何通过设置 textFormat 和 embedFonts 样式,将嵌入字体与 Flash Professional ActionScript 3.0 复选框控件一起使用。ActionScriptExamples.com 提供的示例。 // Requires: // - A CheckBox control UI component in Flash library. // - An embedded font in Flash library with linkage class "MyFont" and Export for ActionScript checked. // import fl.controls.CheckBox; var embeddedFont:Font = new MyFont(); var textFormat:TextFormat = new TextFormat(); textFormat.font = embeddedFont.fontName; textFormat.size = 24; var checkBox:CheckBox = new CheckBox(); checkBox.setStyle("textFormat", textFormat); checkBox.setStyle("embedFonts", true); checkBox.label = "The quick brown fox jumps over the lazy dog."; checkBox.textField.autoSize = TextFieldAutoSize.LEFT; checkBox.move(10, 10); checkBox.validateNow(); addChild(checkBox); fontStyle 字体的样式。String 字体的样式。此值可以是 FontStyle 类中定义的任何值。 flash.text.FontStylefontType 字体的类型。String 字体的类型。此值可以是 FontType 类中定义的任何常数。 flash.text.FontType
TextRenderer TextRenderer 类提供了嵌入字体的高级消除锯齿功能。控制嵌入字体的消除锯齿。 Object TextRenderer 类提供了嵌入字体的高级消除锯齿功能。使用高级消除锯齿功能时,即使字号很小,也能使字型达到极高的呈现品质。对需要显示大量小字的应用程序使用高级消除锯齿功能。Adobe 建议不要对非常大(大于 48 点)的字体使用高级消除锯齿功能。高级消除锯齿功能仅适用于 Flash Player 8 和更高版本。

要在文本字段上设置高级消除锯齿功能,请设置 TextField 实例的 antiAliasType 属性。

高级消除锯齿功能提供连续笔触调制 (CSM),它是笔触粗细和边缘清晰度的连续调制。作为一种高级功能,您可以使用 setAdvancedAntiAliasingTable() 方法定义特定字体和字体大小的设置。

下面的示例创建 TextRendererExample 类,以演示对小号和大号字体大小应用高级消除锯齿设置的视觉示例。在测试该示例前,需要先嵌入字体。如果使用的是 Flex,则使用以下方法嵌入字体:
  1. 将名为 georgia.ttf 的 Georgia 字体放在与该 AS 文件相同的目录中。
  2. 在类定义下面直接添加以下代码行:
  3. [Embed(source="georgia.ttf", fontFamily="Georgia")]
  4. private var embeddedFont:String;
如果使用的是 Flash,则使用以下方法嵌入字体:
  1. 在舞台上放置一文本字段并将其选中。
  2. 在“属性”检查器中,将该文本字段的字体设置为 Georgia
  3. 在“属性”检查器中,按“嵌入...”并选择“全部”

注意:

  • 您需要编译 SWF 文件,将“本地播放安全性”设置为“只访问本地文件”。

package { import flash.display.DisplayObject; import flash.display.Sprite; import flash.events.*; import flash.text.*; public class TextRendererExample2 extends Sprite { private var gutter:int = 10; public function TextRendererExample2() { createTextField(8,AntiAliasType.NORMAL); createTextField(8,AntiAliasType.ADVANCED); createTextField(24,AntiAliasType.NORMAL); createTextField(24,AntiAliasType.ADVANCED); } private function createTextField(fontSize:Number,antiAliasType:String):TextField { var tf:TextField = new TextField(); tf.embedFonts = true; tf.autoSize = TextFieldAutoSize.LEFT; tf.antiAliasType = antiAliasType; tf.defaultTextFormat = getTextFormat(fontSize); tf.selectable = false; tf.mouseEnabled = true; tf.text = "The quick brown fox jumped over the lazy dog."; if(numChildren > 0) { var sibling:DisplayObject = getChildAt(numChildren - 1); tf.y = sibling.y + sibling.height + gutter; } addChild(tf); return tf; } private function getTextFormat(fontSize:Number):TextFormat { var format:TextFormat = new TextFormat(); format.size = fontSize; format.font = "Georgia"; return format; } } }
flash.text.TextField.antiAliasTypesetAdvancedAntiAliasingTable 设置字体的自定义连续笔触调制 (CSM) 查找表。fontNameString要为其应用设置的字体的名称。 fontStyleString使用 flash.text.FontStyle 类中某个值表示的字体样式。 colorTypeString此值确定了笔触是深色还是浅色的。使用 flash.text.TextColorType 类中的一个值。 advancedAntiAliasingTableArray一个数组,由一个或多个指定字体的 CSMSettings 对象组成。每个对象都包含下列属性:
  • fontSize
  • insideCutOff
  • outsideCutOff

advancedAntiAliasingTable 数组可以包含指定不同字体大小的 CSM 设置的多个条目。

fontSize 是设置所应用的大小,以像素为单位。

高级消除锯齿功能使用自适应采样距离字段 (ADF) 表示确定字型的轮廓。Flash Player 使用外侧截止值 outsideCutOff(在该值之下密度设置为 0)和内侧截止值 insideCutOff(在该值之上密度设置为最大密度值(如 255))。在这两个截止值之间,映射函数是其范围从外侧截止处的 0 到内侧截止处最大密度的线性曲线。

调整外侧截止值和内侧截止值会影响笔触粗细和边缘清晰度。这两个参数之间的间距相当于典型消除锯齿方法的滤镜半径的两倍;较窄的间距提供的边缘更清晰,而较宽的间距提供更柔滑、经过更多过滤的边缘。当间距为 0 时,生成的密度图像为双层位图。在间距非常宽时,生成的密度图像具有类似水彩画的边缘。

通常,对于小点值,用户首选清晰的、高对比边缘,对于动画文本和较大的点值,用户首选较柔滑的边缘。

外侧截止通常具有负值,内侧截止通常具有正值,而它们的中点通常在 0 附近。通过调整这些参数以使中点向负无穷大移动,将增大笔触粗细;将中点向正无穷大移动将减小笔触粗细。请确保外侧截止值始终小于等于内侧截止值。

设置字体的自定义连续笔触调制 (CSM) 查找表。Flash Player 尝试检测最佳 CSM 以查找所需字体。如果您不满意 Flash Player 提供的 CSM,可以使用 setAdvancedAntiAliasingTable() 方法自定义自己的 CSM。
flash.text.FontStyleflash.text.TextColorTypeCSMSettings
displayMode 控制高级消除锯齿文本的呈现。String"default" 控制高级消除锯齿文本的呈现。文本的视觉品质非常主观,虽然 Flash Player 尝试使用最佳设置来满足各种条件,但设计人员也可能为他们的文本选择不同的外观。此外,使用 displayMode,设计人员可以独立于用户的硬件覆盖 Flash Player 的子像素选择和创建可视一致性。使用 TextDisplayMode 类中的值来设置此属性。 TextDisplayMode 类maxLevel 高级消除锯齿功能的自适应采样距离字段 (ADF) 的品质级别。int4 高级消除锯齿功能的自适应采样距离字段 (ADF) 的品质级别。可接受的值只有 3、4 和 7。

高级消除锯齿功能使用 ADF 表示确定字型的轮廓。品质越高,ADF 结构所需的缓存空间越多。值 3 需要的内存量最小,提供的品质也最低。字体越大,所需的缓存空间越多;对于大小为 64 像素的字体,除非品质级别已设置为 7,否则品质级别将可从 3 增加到 4 或从 4 增加到 7

TextLineMetrics TextLineMetrics 类包含文本字段中某行文本的文本位置和度量值的相关信息。包含文本字段中某行文本的文本位置和度量值的相关信息。 Object TextLineMetrics 类包含文本字段中某行文本的文本位置和度量值的相关信息。所有度量值均以像素为单位。此类的对象由 flash.text.TextField.getLineMetrics() 方法返回。

有关与包含文本行的文本字段相关的度量值(例如,图中的“文本字段高度”度量值),请参阅 flash.text.TextField。

下图表示了文本字段的点和度量值以及该字段包含的文本行:

下例创建了类 TextLineMetricsExample 和 LineMetricsReader 以通过 XML 对象输出 Flash Player 中的消息。这是使用以下步骤完成的:
  1. 创建名为 label 的 TextField 类型的属性。
  2. 构造函数调用 configureAssets(),该构造函数可执行以下操作:
    • 将舞台的对齐方式设置为靠左上角对齐,且不进行缩放。
    • 创建新的 TextField 对象,名为 label
    • 启用 label 的背景并将颜色设置为白色。
    • 允许 label 的文本通过自动换行来跨多行。
    • 将对 getLabelText() 调用的结果赋给 labeltext 属性。getLabelText() 方法创建一个 XML 类型的变量并将该变量赋给一个名为 body 的 XML 节点,该节点填充了一个长句子。
    • 使用 addChild()label 添加到显示列表中。
  3. 然后会添加侦听在舞台上执行的 resize 事件的方法,方法名为 resizeHandler()。每次更改 Flash Player 窗口大小时,都会调度 RESIZE 事件,并执行以下操作:
    • 调用 draw() 以确保 label 显示在舞台的中央,并在四周各留出 10 像素的缓冲距离。
    • setTimeout() 然后在短暂的延迟后执行 showMetrics()。添加延迟的原因是,在 RESIZE 事件完成并且舞台被完全重绘以前,行度量不会更新。
    • showMetrics() 将名为 metrics 的 TextLineMetrics 变量赋给对 getLineMetrics() 的调用结果,然后将此变量传递给 LineMetricsReader 实例的新实例,新实例名为 reader。然后,在对 trace() 的调用中使用这两个变量,以输出 label 的第一行(只有这一行)和由 LineMetricsReader 实例通过其 toString() 方法提供的信息。
  4. 构造函数强制 resize 事件的一次调度,以便在第一次加载 SWF 文件时迫使 label 绘制正确。
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.*; import flash.text.TextField; import flash.text.TextLineMetrics; import flash.utils.setTimeout; public class TextLineMetricsExample extends Sprite { private var gutter:int = 10; private var label:TextField; public function TextLineMetricsExample() { configureAssets(); configureListeners(); resizeHandler(new Event(Event.RESIZE)); } private function showMetrics():void { var metrics:TextLineMetrics = label.getLineMetrics(0); var reader:LineMetricsReader = new LineMetricsReader(metrics); trace("lineText: " + label.getLineText(0)); trace("metrics: " + reader); } private function configureAssets():void { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; label = new TextField(); label.background = true; label.backgroundColor = 0xFFFFFF; label.multiline = true; label.wordWrap = true; label.text = getLabelText(); addChild(label); } private function configureListeners():void { stage.addEventListener(Event.RESIZE, resizeHandler); } private function resizeHandler(event:Event):void { draw(); setTimeout(showMetrics, 100); } private function draw():void { label.x = gutter; label.y = gutter; label.width = stage.stageWidth - (gutter * 2); label.height = stage.stageHeight - (gutter * 2); } private function getLabelText():String { var text:XML = <body>The Flex product line enables developers to build rich Internet applications that blend the responsiveness of desktop software, the cross-platform reach of the web, and the expressiveness of the Flash Platform.</body> return text.toString(); } } } import flash.text.TextLineMetrics; class LineMetricsReader { private var metrics:TextLineMetrics; public function LineMetricsReader(metrics:TextLineMetrics) { this.metrics = metrics; } public function toString():String { return "[TextLineMetrics ascent:" + metrics.ascent + ", descent:" + metrics.descent + ", leading:" + metrics.leading + ", width:" + metrics.width + ", height:" + metrics.height + ", x:" + metrics.x + "]"; } }
flash.text.TextFieldTextLineMetrics 创建 TextLineMetrics 对象。xNumber第一个字符的左侧位置,以像素为单位。 widthNumber选定行中文本的宽度(并不一定是完整文本),以像素为单位。 heightNumber选定行中文本的高度(并不一定是完整文本),以像素为单位。 ascentNumber从基线到行顶部的长度,以像素为单位。 descentNumber从基线到行底部的长度,以像素为单位。 leadingNumber文本行之间的垂直距离度量值。 包含文本字段中某行文本的文本位置和度量值的相关信息。 创建 TextLineMetrics 对象。TextLineMetrics 对象包含文本字段中文本行的相关文本度量信息。此类的对象由 flash.text.TextField.getLineMetrics() 方法返回。

有关上下文中提到的属性,请参阅此类概述部分的插图。

TextLineMetrics 类概述flash.text.TextField.getLineMetrics()
ascent 文本的上缘值是从基线到行高度顶部的长度,以像素为单位。Number 文本的上缘值是从基线到行高度顶部的长度,以像素为单位。请参阅此类概述部分的插图中的“上缘”度量值。 TextLineMetrics 类概述descent 文本的下缘值是从基线到行深度底部的长度,以像素为单位。Number 文本的下缘值是从基线到行深度底部的长度,以像素为单位。请参阅此类概述部分的插图中的“下缘”度量值。 TextLineMetrics 类概述height 高度值是选定行中的文本的高度(并不一定是完整文本),以像素为单位。Number 高度值是选定行中的文本的高度(并不一定是完整文本),以像素为单位。文本行的高度不包括装订线高度。请参阅此类概述部分的插图中的“行高”度量值。 TextLineMetrics 类概述leading 前导值是文本行之间的垂直距离的度量值。Number 前导值是文本行之间的垂直距离的度量值。请参阅此类概述部分的插图中的“前导”度量值。 TextLineMetrics 类概述width 宽度值是选定行中的文本的宽度(并不一定是完整文本),以像素为单位。Number 宽度值是选定行中的文本的宽度(并不一定是完整文本),以像素为单位。文本行的宽度与文本字段的宽度不同。文本行的宽度与文本字段的宽度有关,它等于文本字段的宽度减去 4 个像素的装订线宽度(每边 2 个像素)。请参阅此类概述部分的插图中的“文本行宽度”度量值。 TextLineMetrics 类概述x x 值是第一个字符的左侧位置,以像素为单位。Number x 值是第一个字符的左侧位置,以像素为单位。此值包括边距、缩进(如果有)和装订线宽度。请参阅此类概述部分的插图中的“文本行 x 位置”。 TextLineMetrics 类概述
TextInteractionMode 定义文本字段对象的交互模式的类。Object 定义文本字段对象的交互模式的类。 NORMAL 文本字段的默认交互模式为 NORMAL,根据平台有所不同。normalString 文本字段的默认交互模式为 NORMAL,根据平台有所不同。在台式机上,标准模式意味着文本字段处于可滚动模式以及选择模式。在 Android 这样的移动平台上,标准模式意味着文本字段只能滚动,但不能选择文本。 SELECTION 在像 Android 这样的移动平台上,文本字段以正常模式(意思是指滚动和非可选模式)启动。selectionString 在像 Android 这样的移动平台上,文本字段以正常模式(意思是指滚动和非可选模式)启动。用户可以通过文本字段对象的内置上下文菜单切换到选择模式。 StyleSheet 使用 StyleSheet 类可以创建包含文本格式设置规则(例如,字体大小、颜色和其它格式样式)的 StyleSheet 对象。用于创建 StyleSheet 对象。 flash.events:EventDispatcher 使用 StyleSheet 类可以创建包含文本格式设置规则(例如,字体大小、颜色和其他格式样式)的 StyleSheet 对象。然后,可以将样式表定义的样式应用到包含 HTML 或 XML 格式文本的 TextField 对象。根据 StyleSheet 对象定义的标签样式自动设置 TextField 对象中文本的格式。可以使用文本样式来定义新的格式标签,重新定义内置的 HTML 标签,或创建可应用到某些 HTML 标签的样式类。

要对一个 TextField 对象应用样式,请将该 StyleSheet 对象赋给 TextField 对象的 styleSheet 属性。

注意:具有样式表的文本字段不可编辑。也就是说,type 属性设置为 TextFieldType.INPUT 的文本字段会对文本字段的默认文本应用样式表,但用户不再能编辑该内容。考虑使用 TextFormat 类将样式分配给输入文本字段。

Flash Player 支持原 CSS1 规范 (www.w3.org/TR/REC-CSS1) 中的部分属性。下表显示受支持的层叠样式表 (CSS) 属性和值,及其相应的 ActionScript 属性名称。(每个 ActionScript 属性名称都是从对应的 CSS 属性名称派生的;如果名称中包含连字符,请省略连字符并将连字符后的字符变成大写。)

CSS 属性ActionScript 属性用法和支持的值colorcolor只支持十六进制颜色值。不支持具有指定名称的颜色(例如 blue)。颜色以下面的格式写入:#FF0000displaydisplay受支持的值为 inlineblocknonefont-familyfontFamily用逗号分隔的供使用字体的列表,根据需要按降序排列。可以使用任何字体系列名称。如果您指定通用字体名称,它将转换为相应的设备字体。支持以下字体转换:mono 转换为 _typewritersans-serif 转换为 _sansserif 转换为 _seriffont-sizefontSize 只使用该值的数字部分。不分析单位(px、pt);像素和点是等价的。font-stylefontStyle可识别的值为 normalitalicfont-weightfontWeight可识别的值为 normalboldkerningkerning可识别的值为 truefalse。仅嵌入字体支持字距调整。某些字体(如 Courier New)不支持字距调整。只有 Windows 中创建的 SWF 文件支持 kerning 属性,而 Macintosh 中创建的 SWF 文件不支持该属性。但是,这些 SWF 文件可以在 Flash Player 的非 Windows 版本中播放,并且仍可以应用字距调整。leadingleading两行之间统一分布的距离。该值指定在每行之后添加的像素数。负值将压缩两行之间的距离。只使用该值的数字部分。不分析单位(px、pt);像素和点是等价的。letter-spacingletterSpacing两个字符之间统一分布的距离。该值指定在每个字符之后添加的像素数。负值将压缩两个字符之间的距离。只使用该值的数字部分。不分析单位(px、pt);像素和点是等价的。margin-leftmarginLeft只使用该值的数字部分。不分析单位(px、pt);像素和点是等价的。 margin-rightmarginRight只使用该值的数字部分。不分析单位(px、pt);像素和点是等价的。text-aligntextAlign可识别的值为 leftcenterrightjustifytext-decorationtextDecoration可识别的值为 noneunderlinetext-indenttextIndent只使用该值的数字部分。不分析单位(px、pt);像素和点是等价的。

可以使用 StyleSheet 类执行低级文本呈现。但是,在 Flex 中,您通常使用 Label、Text、TextArea 和 TextInput 控件来处理文本。

下例创建了一个新样式表并将粗体和红色字体处理分配给标题样式。 package { import flash.display.Sprite; import flash.text.StyleSheet; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class StyleSheetExample extends Sprite { public function StyleSheetExample() { var style:StyleSheet = new StyleSheet(); var heading:Object = new Object(); heading.fontWeight = "bold"; heading.color = "#FF0000"; var body:Object = new Object(); body.fontStyle = "italic"; style.setStyle(".heading", heading); style.setStyle("body", body); var label:TextField = new TextField(); label.styleSheet = style; label.htmlText = "<body><span class='heading'>Hello </span>World...</body>"; addChild(label); } } }
flash.text.TextFieldStyleSheet 创建新的 StyleSheet 对象。 创建新的 StyleSheet 对象。 flash.text.StyleSheet.getStyle()clear 从样式表对象中删除所有样式。 从样式表对象中删除所有样式。 getStyle 返回与名为 styleName 的样式相关联的样式对象的一个副本。一个对象。 ObjectstyleNameString一个字符串,该字符串指定要检索的样式的名称。 返回与名为 styleName 的样式相关联的样式对象的一个副本。如果没有与 styleName 相关联的样式对象,则返回 null有关如何使用 getStyle() 方法的说明,请参阅 parseCSS()transform() 方法的示例。 flash.text.StyleSheet.setStyle()parseCSS 分析 CSSText 中的 CSS 并用它加载样式表。CSSTextString要分析的 CSS 文本(字符串)。 分析 cssText 中的 CSS 并用它加载 StyleSheet。 分析 CSSText 中的 CSS 并用它加载样式表。如果 CSSText 中的某个样式在 styleSheet 中已经存在,则保留 styleSheet 中的属性,在 styleSheet 中只添加或更改 CSSText 中的属性。

要扩展本机 CSS 分析功能,可通过创建 StyleSheet 类的子类来覆盖此方法。

在下面的示例中,当用户单击文本文件时,则会将从某个文件中加载的 CSS 样式应用于文本文件内容。

在构造函数中,创建了一个多行文本字段,并将其内容设置为 HTML 格式的字符串。(在应用 CSS 样式之前不会呈现 HTML heading 和 span 标签。)将创建一个用于指定 CSS 文件位置的 URLRequest 对象,就本示例而言,该 CSS 文件与 SWF 文件位于同一个目录中。该文件是使用 URLLoader 对象加载的。共为 loader URLLoader 对象添加了两个事件侦听器。如果发生 IO 错误,则会调用 errorHandler() 方法,它在文本字段中显示一条错误消息。在接收所有数据并将其放在 loader URLLoader 对象的 data 属性中后,将调用 loaderCompleteHandler() 方法。此方法分析从文件加载的数据中的 CSS 样式,并使用样式定义填充 sheet StyleSheet 对象。

当用户单击文本字段时,将调用 clickHandler() 方法。clickHandler() 方法中的 if 语句检查以确保在将样式表应用于文本字段之前完成文件加载。为了使样式表生效,在将样式表分配给文本字段后,必须为内容重新分配 htmlText 属性。还会将 heading 标签的 CSS font-familycolor 属性值附加到文本字段内容中。(如果样式表值无效,则这些属性的值为“undefined”。)

下面是一个可用于此示例的 CSS 文件内容的示例。在运行此示例之前,请先创建一个文本文件,将下面的 CSS 内容复制到该文件中,然后使用文件名 test.css 保存该文件,并将其放在与 SWF 文件相同的目录中。

   p {
      font-family: Times New Roman, Times, _serif;
      font-size: 14;
       font-Style: italic;
        margin-left: 10;  
   }
   h1 {
      font-family: Arial, Helvetica, _sans;
      font-size: 20;
      font-weight: bold;
   }
   .bluetext {
      color: #0000CC;
   }
 
package { import flash.display.Sprite; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.StyleSheet; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.IOErrorEvent; import flash.events.Event; import flash.events.MouseEvent; public class StyleSheet_parseCSSExample extends Sprite { private var loader:URLLoader = new URLLoader(); private var field:TextField = new TextField(); private var exampleText:String = "<h1>This is a headline</h1>" + "<p>This is a line of text. <span class='bluetext'>" + "This line of text is colored blue.</span></p>"; private var sheet:StyleSheet = new StyleSheet(); private var cssReady:Boolean = false; public function StyleSheet_parseCSSExample() { field.x = 10; field.y = 10; field.background = true; field.multiline = true; field.autoSize = TextFieldAutoSize.LEFT; field.htmlText = exampleText; field.addEventListener(MouseEvent.CLICK, clickHandler); addChild(field); var req:URLRequest = new URLRequest("test.css"); loader.load(req); loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.addEventListener(Event.COMPLETE, loaderCompleteHandler); } public function errorHandler(e:IOErrorEvent):void { field.htmlText = "Couldn't load the style sheet file."; } public function loaderCompleteHandler(event:Event):void { sheet.parseCSS(loader.data); cssReady = true; } public function clickHandler(e:MouseEvent):void { if (cssReady) { field.styleSheet = sheet; field.htmlText = exampleText; var style:Object = sheet.getStyle("h1"); field.htmlText += "<p>Headline font-family is: " + style.fontFamily + "</p>"; field.htmlText += "<p>Headline color is: " + style.color + "</p>"; } else { field.htmlText = "Couldn't apply the CSS styles."; } } } }
setStyle 将具有指定名称的新样式添加到样式表对象中。styleNameString一个字符串,用于指定要添加到样式表中的样式的名称。 styleObjectObject一个说明样式的对象,或 null 将具有指定名称的新样式添加到样式表对象中。如果该样式表中没有指定名称的样式,将添加该样式。如果该样式表中已经有指定名称的样式,将替换该样式。如果 styleObject 参数为 null,则删除指定名称的样式。

Flash Player 将创建传递给此方法的样式对象的一个副本。

要获取所支持样式的列表,请参阅 StyleSheet 类说明中的表。

transform 扩展 CSS 分析功能。一个包含 CSS 规则向文本格式属性映射的结果的 TextFormat 对象。 flash.text:TextFormatformatObjectObject一个说明样式的对象(包含作为对象属性的样式规则),或 null 扩展 CSS 分析功能。高级开发人员可通过扩展 StyleSheet 类覆盖此方法。 本示例使用 transform() 方法将 CSS 文件中的某个样式应用于文本字段的 TextFormat 对象。

CSS 样式通常用于设置 HTML 内容的格式。但是,通过使用 StyleSheet 对象的 transform() 方法,可以将特定 CSS 样式分配给 TextFormat 对象,然后将其应用于任何文本字段。

我们使用 URLRequestURLLoader 对象来加载 CSS 文件; 为 Event.COMPLETE 事件添加一个事件侦听器,在接收所有数据并将其放在 loader URLLoader 对象的 data 属性中后,将会发生该事件。然后,loaderCompleteHandler() 方法分析从文件加载的数据中的 CSS,并使用这些样式填充 sheet StyleSheet 对象。样式表的 getStyle() 方法将检索 HTML 段落样式,然后使用样式表的 transform() 方法将这些样式分配给 cssFormat TextFormat 对象。最后,将 inputField 文本字段的默认文本格式设置为新的 cssFormat 文本格式。

package { import flash.display.Sprite; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.StyleSheet; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFieldType; import flash.events.IOErrorEvent; import flash.events.Event; public class StyleSheet_transformExample extends Sprite { private var loader:URLLoader = new URLLoader(); private var inputField:TextField = new TextField(); private var sheet:StyleSheet = new StyleSheet(); public function StyleSheet_transformExample() { inputField.x = 10; inputField.y = 10; inputField.background = true; inputField.width = 300; inputField.height = 200; inputField.wordWrap = true; inputField.multiline = true; inputField.type = TextFieldType.INPUT; addChild(inputField); var req:URLRequest = new URLRequest("test.css"); loader.load(req); loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.addEventListener(Event.COMPLETE, loaderCompleteHandler); } public function errorHandler(e:IOErrorEvent):void { inputField.htmlText = "Couldn't load the style sheet file."; } public function loaderCompleteHandler(event:Event):void { var cssFormat:TextFormat = new TextFormat(); sheet.parseCSS(loader.data); var style:Object = sheet.getStyle("p"); cssFormat = sheet.transform(style); inputField.defaultTextFormat = cssFormat; } } }
flash.text.TextFormat
styleNames 一个数组,其中包含此样式表中注册的所有样式的名称(字符串形式)。Array返回此 StyleSheet 中注册的所有样式的名称。 一个数组,其中包含此样式表中注册的所有样式的名称(字符串形式)。
TextSnapshot TextSnapshot 对象可用于处理影片剪辑中的静态文本。Object TextSnapshot 对象可用于处理影片剪辑中的静态文本。例如,您可以使用 TextSnapshot 对象用高于动态文本所允许的精度对文本进行布局,但仍以只读方式访问该文本。

您不必使用构造函数即可创建 TextSnapshot 对象;它由 flash.display.DisplayObjectContainer.textSnapshot 属性返回。

flash.display.DisplayObjectContainer.textSnapshotfindText 搜索指定的 TextSnapshot 对象,并返回在 beginIndex 位置或其后找到的 textToFind 的第一个匹配项的位置。指定文本的第一个匹配项从零开始的索引位置或 -1。 intbeginIndexint指定起始点以搜索指定文本。 textToFindString指定要搜索的文本。如果指定的是字符串文本,而不是 String 类型的变量,请用引号将字符串括起来。 caseSensitiveBoolean指定文本是否必须与 textToFind 中的字符串大小写相匹配。 搜索指定的 TextSnapshot 对象,并返回在 beginIndex 位置或其后找到的 textToFind 的第一个匹配项的位置。如果未找到 textToFind,则该方法返回 -1flash.text.TextSnapshot.getText()getSelectedText 返回一个字符串,其中包含对应的 setSelected() 方法指定的所有字符。一个字符串,其中包含对应的 setSelected() 命令指定的所有字符。 StringincludeLineEndingsBooleanfalse一个可选的布尔值,用于指定是否将换行符插入到返回字符串中的合适位置。默认值为 false 返回一个字符串,其中包含对应的 setSelected() 方法指定的所有字符。如果没有指定任何字符(由 setSelected() 方法指定),则返回一个空字符串。

如果将 true 传递给 includeLineEndings,则换行符将插入到返回字符串中,因此该返回字符串可能比输入范围长。如果 includeLineEndingsfalse 或被省略,则该方法返回没有添加任何字符的选定文本。

flash.text.TextSnapshot.getSelected()flash.text.TextSnapshot.setSelected()
getSelected 返回一个布尔值,该值指定 TextSnapshot 对象是否包含指定范围内的所选文本。一个布尔值,表示对应的 setSelected() 方法是否已选择了给定范围内的至少一个字符,如果选择了字符,则为 true;否则为 falseBooleanbeginIndexint表示要检查的第一个字符的位置。beginIndex 的有效值为 0TextSnapshot.charCount - 1。如果 beginIndex 是一个负值,则使用 0endIndexint比要检查的最后一个字符的索引大 1 的一个值。endIndex 的有效值为 0charCount。由 endIndex 参数索引的字符未包括在已提取的字符串中。如果省略此参数,则使用 charCount。如果此值小于等于 beginIndex 的值,则使用 beginIndex + 1 返回一个布尔值,该值指定 TextSnapshot 对象是否包含指定范围内的所选文本。

要搜索全部字符,请将值 0 传递给 start,并将 charCount(或任何非常大的数字)传递给 end。要搜索一个字符,请传递给 end 参数一个比 start 参数大 1 的值。

flash.text.TextSnapshot.charCountflash.text.TextSnapshot.getText()flash.text.TextSnapshot.getSelectedText()flash.text.TextSnapshot.setSelected()
getTextRunInfo 返回包含关于文本运行信息的对象的数组。一个对象数组,其中的每个对象都包含有关由 beginIndexendIndex 参数指定的字符范围中特定字符的信息。每个对象都包含以下 11 种属性:
  • indexInRun:字符相对于整个字符串(而不是相对于所选运行文本)的从零开始的整数索引。
  • selected:一个布尔值,表示是否选中字符。如果选中,则该值为 true;否则为 false
  • font:字符的字体名称。
  • color:字符的 Alpha 和颜色的合并值。前两个十六进制数字表示 Alpha 值,其余数字表示颜色值。
  • height:字符的高度,以像素为单位。
  • matrix_amatrix_bmatrix_cmatrix_dmatrix_txmatrix_ty:矩阵的值,该矩阵对字符定义几何转换。通常,立式文本始终具有形式为 [1 0 0 1 x y] 的矩阵,其中 xy 是字符在父级影片剪辑内的位置,与文本的高度无关。该矩阵位于父级影片剪辑坐标系统中,并且不包括对影片剪辑本身(或其父级)的任何转换。
  • corner0xcorner0ycorner1xcorner1ycorner2xcorner2ycorner3xcorner3y:字符边框的各个角,以父级影片剪辑的坐标系统为基础。这些值仅在字符使用的字体嵌入到 SWF 文件时可用。
Array
beginIndexintTextSnapshot 对象中字符范围内第一个字符的索引值。 endIndexintTextSnapshot 对象中字符范围内最后一个字符的索引值。
返回包含关于文本运行信息的对象的数组。每个对象都与两个方法参数指定的字符范围中的一个字符相对应。

注意:对于大范围的文本,使用 getTextRunInfo() 方法可以返回一个较大的对象。Adobe 建议限制由 beginIndexendIndex 参数定义的文本范围。

Matrix 类
getText 返回一个字符串,其中包含 beginIndex 和 endIndex 参数指定的所有字符。一个包含指定范围内字符的字符串,如果在指定范围内未找到任何字符,则为一个空字符串。 StringbeginIndexint表示要包括在返回字符串中的第一个字符的位置。beginIndex 的有效值为 0charCount - 1。如果 beginIndex 是一个负值,则使用 0endIndexint比要检查的最后一个字符的索引大 1 的一个值。endIndex 的有效值为 0charCount。由 endIndex 参数索引的字符未包括在已提取的字符串中。如果省略此参数,则使用 charCount。如果此值小于等于 beginIndex 的值,则使用 beginIndex + 1includeLineEndingsBooleanfalse一个可选的布尔值,指定是将换行符插入到返回的字符串中 (true),还是不插入到返回的字符串中 (false)。默认值为 false 返回一个字符串,其中包含 beginIndexendIndex 参数指定的所有字符。如果没有选择任何字符,则返回一个空字符串。

要返回全部字符,请将值 0 传递给 beginIndex,并将 charCount(或任何非常大的数字)传递给 endIndex。要返回单个字符,请将值 beginIndex + 1 传递给 endIndex

如果将值 true 传递给 includeLineEndings,则将换行符插入到返回字符串中认为合适的位置。在这种情况下,返回字符串可能比输入范围长。如果 includeLineEndingsfalse 或被省略,则返回所选文本,且不添加任何字符。

flash.text.TextSnapshot.charCountflash.text.TextSnapshot.getSelectedText()
hitTestTextNearPos 用于确定 TextSnapshot 对象中哪个字符位于包含 TextSnapshot 对象中文本的影片剪辑的指定的 x, y 坐标上或位于该坐标的附近。一个数字,表示最接近指定 x, y 坐标的字符的索引值。如果未找到任何字符,或者字体不包含字符度量信息,则返回 -1NumberxNumber一个数字,表示包含文本的影片剪辑的 x 坐标。 yNumber一个数字,表示包含文本的影片剪辑的 y 坐标。 maxDistanceNumber0一个可选数字,表示距 x, y(搜索其可查找文本)的最远距离。此距离是从每个字符的中心点开始测量的。默认值为 0 用于确定 TextSnapshot 对象中哪个字符位于包含 TextSnapshot 对象中文本的影片剪辑的指定的 x, y 坐标上或位于该坐标的附近。

如果省略 maxDistance 或为其传递值 0,则由 x, y 坐标指定的位置必须位于 TextSnapshot 对象的边框内。

此方法仅适用于包括字符度量信息的字体;但是,默认情况下,Flash 创作工具不包含静态文本字段的这种信息。因此,该方法可能会返回 -1 而不是索引值。为了确保返回索引值,您可以强制使 Flash 创作工具包括字体的字符度量信息。为此,请添加一个使用此字体的动态文本字段,为该动态文本字段选择“字符选项”,然后指定至少为一个字符嵌入该字体轮廓。(这与所指定的字符以及是否在静态文本字段中使用这些字符没有关系。)

flash.display.DisplayObject.xflash.display.DisplayObject.y
setSelectColor 指定当突出显示使用 setSelected() 方法选择的字符时要使用的颜色。hexColoruint0xFFFF00用于字符(这些字符已被对应的 setSelected() 命令选中)旁边边框的颜色,以十六进制格式 (0xRRGGBB) 表示。 指定当突出显示使用 setSelected() 方法选择的字符时要使用的颜色。该颜色始终是不透明的;您不能指定透明值。

此方法仅适用于包括字符度量信息的字体;但是,默认情况下,Flash 创作工具不包含静态文本字段的这种信息。因此,该方法可能会返回 -1 而不是索引值。为了确保返回索引值,您可以强制使 Flash 创作工具包括字体的字符度量信息。为此,请添加一个使用此字体的动态文本字段,为该动态文本字段选择“字符选项”,然后指定至少为一个字符嵌入该字体轮廓。(这与所指定的字符以及是否在静态文本字段中使用这些字符没有关系。)

flash.text.TextSnapshot.setSelected()
setSelected 指定 TextSnapshot 对象中要选择或取消选择的字符范围。beginIndexint表示要选择的第一个字符的位置。beginIndex 的有效值为 0charCount - 1。如果 beginIndex 是一个负值,则使用 0endIndexint一个整数,它等于要检查的最后一个字符的索引加 1。end 的有效值为 0charCount。由 end 参数索引的字符未包括在已提取的字符串中。如果省略此参数,则使用 TextSnapshot.charCount。如果 beginIndex 的值小于等于 endIndex 的值,则使用 beginIndex + 1selectBoolean一个布尔值,指定是应该选择文本 (true),还是应该取消选择文本 (false)。 指定 TextSnapshot 对象中要选择或取消选择的字符范围。被选中的字符的后面绘制有一个带颜色的矩形,与字符的边框匹配。边框的颜色由 setSelectColor() 定义。

要选择或取消选择所有字符,请将值 0 传递给 beginIndex,并将 charCount(或任何一个非常大的数字)传递给 endIndex。要指定单个字符,请将值 start + 1 传递给 endIndex

因为在选择时,字符是单个地进行标记的,所以您可以多次调用此方法以选择多个字符;也就是说,使用此方法不会取消选择已由此方法设置的其他字符。

只针对包含字符度量信息的字体显示表明选中的彩色矩形;默认情况下,Flash 不包含静态文本字段的这种信息。在某些情况下,此行为意味着选中的文本在屏幕上不会显示为已选中。为了确保所有选中的文本都显示为已选中,您可以强制使 Flash 创作工具包括字体的字符度量信息。为此,请添加一个使用此字体的动态文本字段,为该动态文本字段选择“字符选项”,然后指定至少为一个字符嵌入该字体轮廓。这与所指定的字符以及是否在所述静态文本字段中使用这些字符没有关系。

flash.text.TextSnapshot.charCountflash.text.TextSnapshot.setSelectColor()
charCount TextSnapshot 对象中的字符数。int TextSnapshot 对象中的字符数。 flash.text.TextSnapshot.getText()
TextFieldAutoSize TextFieldAutoSize 类是在设置 TextField 类的 autoSize 属性时使用的常数值的枚举。Object TextFieldAutoSize 类是在设置 TextField 类的 autoSize 属性时使用的常数值的枚举。 flash.text.TextField.autoSizeCENTER 指定将文本视为居中对齐文本。centerString 指定将文本视为居中对齐文本。调整单个文本字段行,使其在左右边距之间均衡分布。 LEFT 指定将文本视为左对齐文本,即文本字段的左侧固定不变,只在右侧调整单行的大小。leftString 指定将文本视为左对齐文本,即文本字段的左侧固定不变,只在右侧调整单行的大小。 NONE 指定不调整大小。noneString 指定不调整大小。 RIGHT 指定将文本视为右对齐文本,即文本字段的右侧固定不变,只在左侧调整单行的大小。rightString 指定将文本视为右对齐文本,即文本字段的右侧固定不变,只在左侧调整单行的大小。 TextFieldType TextFieldType 类是在设置 TextField 类的 type 属性时使用的常数值的枚举。Object TextFieldType 类是在设置 TextField 类的 type 属性时使用的常数值的枚举。 flash.text.TextField.typeDYNAMIC 用于指定 dynamic TextField。dynamicString 用于指定 dynamic TextField。 INPUT 用于指定 input TextField。inputString 用于指定 input TextField。 FontStyle FontStyle 类提供 TextRenderer 类的值。Object FontStyle 类提供 TextRenderer 类的值。 flash.text.TextRendererBOLD_ITALIC 为 setAdvancedAntiAliasingTable() 方法中的 fontStyle 参数定义粗体和斜体样式的字体。boldItalicStringsetAdvancedAntiAliasingTable() 方法中的 fontStyle 参数定义粗体和斜体样式的字体。使用语法 FontStyle.BOLD_ITALICflash.text.TextRenderer.setAdvancedAntiAliasingTable()BOLD 为 setAdvancedAntiAliasingTable() 方法中的 fontStyle 参数定义粗体样式的字体。Bob Pappas boldStringsetAdvancedAntiAliasingTable() 方法中的 fontStyle 参数定义粗体样式的字体。使用语法 FontStyle.BOLDflash.text.TextRenderer.setAdvancedAntiAliasingTable()ITALIC 为 setAdvancedAntiAliasingTable() 方法中的 fontStyle 参数定义斜体样式的字体。italicStringsetAdvancedAntiAliasingTable() 方法中的 fontStyle 参数定义斜体样式的字体。使用语法 FontStyle.ITALICflash.text.TextRenderer.setAdvancedAntiAliasingTable()REGULAR 为 setAdvancedAntiAliasingTable() 方法中的 fontStyle 参数定义不带样式的字体。Bob Pappas regularStringsetAdvancedAntiAliasingTable() 方法中的 fontStyle 参数定义不带样式的字体。使用语法 FontStyle.REGULARflash.text.TextRenderer.setAdvancedAntiAliasingTable()