包 | flash.events |
类 | public class TextEvent |
继承 | TextEvent Event Object |
子类 | DataEvent, ErrorEvent, IMEEvent |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
TextEvent.LINK
和 TextEvent.TEXT_INPUT
。
相关 API 元素
属性 | 由以下参数定义 | ||
---|---|---|---|
bubbles : Boolean [只读]
表示事件是否为冒泡事件。 | Event | ||
cancelable : Boolean [只读]
表示是否可以阻止与事件相关联的行为。 | Event | ||
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
currentTarget : Object [只读]
当前正在使用某个事件侦听器处理 Event 对象的对象。 | Event | ||
eventPhase : uint [只读]
事件流中的当前阶段。 | Event | ||
target : Object [只读]
事件目标。 | Event | ||
text : String
在 textInput 事件中,由用户输入的字符或字符序列。 | TextEvent | ||
type : String [只读]
事件的类型。 | Event |
方法 | 由以下参数定义 | ||
---|---|---|---|
创建一个 Event 对象,其中包含有关文本事件的信息。 | TextEvent | ||
[覆盖]
创建 TextEvent 对象的副本,并设置每个属性的值以匹配原始属性值。 | TextEvent | ||
用于在自定义 ActionScript 3.0 Event 类中实现 toString() 方法的实用程序函数。 | Event | ||
表示对象是否已经定义了指定的属性。 | Object | ||
检查是否已对事件调用 preventDefault() 方法。 | Event | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
如果可以取消事件的默认行为,则取消该行为。 | Event | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
设置循环操作动态属性的可用性。 | Object | ||
防止对事件流中当前节点中和所有后续节点中的事件侦听器进行处理。 | Event | ||
防止对事件流中当前节点的后续节点中的所有事件侦听器进行处理。 | Event | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
[覆盖]
返回一个字符串,其中包含 TextEvent 对象的所有属性。 | TextEvent | ||
返回指定对象的原始值。 | Object |
常量 | 由以下参数定义 | ||
---|---|---|---|
LINK : String = "link" [静态]
定义 link 事件对象的 type 属性值。 | TextEvent | ||
TEXT_INPUT : String = "textInput" [静态]
定义 textInput 事件对象的 type 属性值。 | TextEvent |
text | 属性 |
text:String
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
在 textInput
事件中,是由用户输入的字符或字符序列。对于 link
事件,是 <a>
标签的 href
属性的 event
属性的文本。
实现
public function get text():String
public function set text(value:String):void
示例 ( 如何使用本示例 )
link
事件:
import flash.text.TextField; import flash.events.TextEvent; var tf:TextField = new TextField(); tf.htmlText = "<a href='event:myEvent'>Click Me.</a>"; tf.addEventListener("link", clickHandler); addChild(tf); function clickHandler(e:TextEvent):void { trace(e.type); // link trace(e.text); // myEvent }
TextEvent | () | 构造函数 |
public function TextEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, text:String = "")
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
创建一个 Event 对象,其中包含有关文本事件的信息。将 Event 对象作为参数传递给事件侦听器。
参数type:String — 事件的类型。事件侦听器可以通过继承的 type 属性访问此信息。可能的值包括:TextEvent.LINK 和 TextEvent.TEXT_INPUT 。
| |
bubbles:Boolean (default = false ) — 确定 Event 对象是否参与事件流的冒泡阶段。事件侦听器可以通过继承的 bubbles 属性访问此信息。
| |
cancelable:Boolean (default = false ) — 确定是否可以取消 Event 对象。事件侦听器可以通过继承的 cancelable 属性访问此信息。
| |
text:String (default = " ") — 用户输入的一个或多个文本字符。事件侦听器可以通过 text 属性访问此信息。
|
相关 API 元素
clone | () | 方法 |
toString | () | 方法 |
LINK | 常量 |
public static const LINK:String = "link"
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
定义 link
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | true |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 包含已单击的超链接的文本字段。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。 |
text | URL 中“event:”之后的其余部分 |
相关 API 元素
示例 ( 如何使用本示例 )
创建一个文本字段,并使用 htmlText
属性将其内容设置为 HTML 格式的字符串。这些链接带有下划线,以便让用户更容易地识别它们。(只有在鼠标指针位于链接上方后,Adobe Flash Player 才会更改鼠标指针。)为了确保用户的单击操作将调用 ActionScript 方法,链接的 URL 应以字符串“event:”
开头并且为 TextEvent.LINK
事件添加了侦听器。
在用户单击链接后触发的 linkHandler()
方法用于管理文本字段的所有 link 事件。第一个 if 语句检查事件的 text
属性,它保存 URL 中“event:”
字符串后面的其余部分。如果用户单击了操作系统的链接,则会使用用户的当前操作系统名称(从系统的 Capabilities.os
属性中获取)使用户转到指定的网站。否则,使用所选的半径大小(通过事件的 text
属性传递)在文本字段下面绘制一个圆。每次用户单击半径链接时,将会清除以前绘制的圆,并使用所选的半径大小绘制一个新的红色圆。
package { import flash.display.Sprite; import flash.events.TextEvent; import flash.errors.IOError; import flash.events.IOErrorEvent; import flash.system.Capabilities; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.display.Shape; import flash.display.Graphics; public class TextEvent_LINKExample extends Sprite { private var myCircle:Shape = new Shape(); public function TextEvent_LINKExample() { var myTextField:TextField = new TextField(); myTextField.autoSize = TextFieldAutoSize.LEFT; myTextField.multiline = true; myTextField.background = true; myTextField.htmlText = "Draw a circle with the radius of <u><a href=\"event:20\">20 pixels</a></u>.<br>" + "Draw a circle with the radius of <u><a href=\"event:50\">50 pixels</a></u>.<br><br>" + "<u><a href=\"event:os\">Learn about your operating system.</a></u><br>"; myTextField.addEventListener(TextEvent.LINK, linkHandler); this.addChild(myTextField); this.addChild(myCircle); } private function linkHandler(e:TextEvent):void { var osString:String = Capabilities.os; if(e.text == "os") { if (osString.search(/Windows/) != -1 ){ navigateToURL(new URLRequest("http://www.microsoft.com/"), "_self"); }else if (osString.search(/Mac/) != -1 ) { navigateToURL(new URLRequest("http://www.apple.com/"), "_self"); } else if (osString.search(/linux/i)!= -1) { navigateToURL(new URLRequest("http://www.tldp.org/"), "_self"); } } else { myCircle.graphics.clear(); myCircle.graphics.beginFill(0xFF0000); myCircle.graphics.drawCircle(100, 150, Number(e.text)); myCircle.graphics.endFill(); } } } }
TEXT_INPUT | 常量 |
public static const TEXT_INPUT:String = "textInput"
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
定义 textInput
事件对象的 type
属性值。
注意:对于 Delete 或 Backspace 键不会调度此事件。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | true |
cancelable | true ;调用 preventDefault() 方法以取消默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 在其中输入字符的文本字段。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。 |
text | 用户输入的字符或字符序列。 |
相关 API 元素
示例 ( 如何使用本示例 )
共创建了三个文本字段,分别用于保存预备说明、用户输入以及警告(错误)消息。添加了一个事件侦听器,以便通过触发 textInputHandler()
方法来响应用户的文本输入。(每次用户输入文本时,都会调度 TextEvent.TEXT_INPUT
事件。)
注意:如果用户输入字符,并且不是作为任何键盘输入(如 backspace)的响应,则会调度 text 事件。要捕获所有键盘事件,请使用 KeyboardEvent
事件的侦听器。)
textInputHandler()
方法用于控制和管理用户输入。preventDefault()
方法用于禁止 Adobe Flash Player 立即在输入文本字段中显示文本。应用程序负责更新该字段。如果撤消用户对已输入的字符(result
字符串)执行的删除或修改操作,当用户输入新字符时,则会将输入文本字段的内容重新分配给 result
字符串。另外,为了获得一致的用户体验,setSelection()
方法会将插入点(尖号)放在文本字段中上次选择的字符后面。
textInputHandler()
方法中的第一个 if 语句检查组合密钥的第 2 个和第 5 个字符位置的输入内容(必须为数字)。如果用户输入正确无误,则会调用 updateCombination()
方法,并将用户输入附加到 (result
) 组合密钥字符串中。updateCombination()
方法还将插入点移到所选字符的后面。在输入 7 个字符后,textInputHandler()
方法中的最后一个 if 语句将 inputTextField
文本字段类型由 INPUT
更改为 DYNAMIC
,这意味着用户无法再输入或更改任何字符。
package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldType; import flash.text.TextFieldAutoSize; import flash.events.TextEvent; public class TextEvent_TEXT_INPUTExample extends Sprite { private var instructionTextField:TextField = new TextField(); private var inputTextField:TextField = new TextField(); private var warningTextField:TextField = new TextField(); private var result:String = ""; public function TextEvent_TEXT_INPUTExample() { instructionTextField.x = 10; instructionTextField.y = 10; instructionTextField.background = true; instructionTextField.autoSize = TextFieldAutoSize.LEFT; instructionTextField.text = "Please enter a value in the format A#AA#AA,\n" + "where 'A' represents a letter and '#' represents a number.\n" + "(Note that once you input a character you can't change it.)" ; inputTextField.x = 10; inputTextField.y = 70; inputTextField.height = 20; inputTextField.width = 75; inputTextField.background = true; inputTextField.border = true; inputTextField.type = TextFieldType.INPUT; warningTextField.x = 10; warningTextField.y = 100; warningTextField.autoSize = TextFieldAutoSize.LEFT; inputTextField.addEventListener(TextEvent.TEXT_INPUT, textInputHandler); this.addChild(instructionTextField); this.addChild(inputTextField); this.addChild(warningTextField); } private function textInputHandler(event:TextEvent):void { var charExp:RegExp = /[a-zA-z]/; var numExp:RegExp = /[0-9]/; event.preventDefault(); inputTextField.text = result; inputTextField.setSelection(result.length + 1, result.length + 1); if (inputTextField.text.length == 1 || inputTextField.text.length == 4) { if(numExp.test(event.text) == true) { updateCombination(event.text); } else { warningTextField.text = "You need a single digit number."; } }else { if(charExp.test(event.text) == true) { updateCombination(event.text); } else { warningTextField.text = "You need an alphabet character."; } } if(inputTextField.text.length == 7) { inputTextField.type = TextFieldType.DYNAMIC; instructionTextField.text = "CONGRATULATIONS. You've done."; } } private function updateCombination(s:String):void { warningTextField.text = ""; result += s; inputTextField.text = result; inputTextField.setSelection(result.length + 1, result.length + 1); } } }
- 本示例声明了以后要使用的两个 URL 的常量。
- 本示例声明了以后要使用的类型为 TextField 的两个变量。
- 类构造函数调用以下两个方法:
init()
初始化 TextField 对象并将事件侦听器添加到这些对象中。draw()
将 TextField 添加到显示列表中并赋予要显示的文本。
- 侦听器
linkHandler()
和textInputHandler()
根据其事件类型响应事件。如果 Web 浏览器尚未打开,则linkHandler()
方法将打开 Web 浏览器,并导航到单击的 URL。每次在关联的文本字段中按下某个键时,textInputHandler()
方法仅显示信息。
注意:本示例中显示的域是虚构的,[yourDomain]
应该替换为一个真实存在的域。
package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldType; import flash.text.TextFieldAutoSize; import flash.events.TextEvent; import flash.events.TextEvent; import flash.net.URLRequest; import flash.net.navigateToURL; public class TextEventExample extends Sprite { private const DOMAIN_1_URL:String = "http://www.[yourDomain].com"; private const DOMAIN_2_URL:String = "http://www.[yourDomain].com"; private var linkTxt:TextField; private var textInputTxt:TextField; public function TextEventExample() { init(); draw(); } private function init():void { linkTxt = new TextField(); linkTxt.addEventListener(TextEvent.LINK, linkHandler); linkTxt.height = 60; linkTxt.autoSize = TextFieldAutoSize.LEFT; linkTxt.multiline = true; textInputTxt = new TextField(); textInputTxt.addEventListener(TextEvent.TEXT_INPUT, textInputHandler); textInputTxt.type = TextFieldType.INPUT; textInputTxt.background = true; textInputTxt.border = true; textInputTxt.height = 20; } private function draw():void { addChild(linkTxt); linkTxt.htmlText += createLink(DOMAIN_1_URL, "Click to go to first domain"); linkTxt.htmlText += "<br />"; linkTxt.htmlText += createLink(DOMAIN_2_URL, "Click to go to second domain"); addChild(textInputTxt); textInputTxt.y = linkTxt.height; textInputTxt.text = "type here"; } private function createLink(url:String, text:String):String { var link:String = ""; link += "<font color='#0000FF'>"; link += "<u>"; link += "<b>"; link += "<a href='event:" + url + "'>" + text + "</a>"; link += "</b>"; link += "</u>"; link += "</font>"; return link; } private function linkHandler(e:TextEvent):void { var request:URLRequest = new URLRequest(e.text); navigateToURL(request); } private function textInputHandler(e:TextEvent):void { trace(">> ============================"); trace(">> e.text: " + e.text); trace(">> textInputTxt.text: " + textInputTxt.text); } } }
Tue Jun 12 2018, 11:04 AM Z