套件 | 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
事件,表示 event
特質的文字 (屬於<a>
標籤的 href
特質)。
實作
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 ) — 判斷事件物件是否參與事件流程的反昇階段。事件偵聽程式可以透過繼承的 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()
方法負責管理文字欄位的所有連結事件。第一個 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) 的回應時,便會傳送文字事件。若要捕捉鍵盤事件,請為 KeyboardEvent
事件使用偵聽程式。
textInputHandler()
方法會控制和管理使用者輸入。 preventDefault()
方法是用來避免 Adobe Flash Player 立即在輸入文字欄位中顯示文字。應用程式會負責更新欄位。若要還原使用者對已輸入之字元 (result
字串) 所做的刪除或修改動作,當使用者輸入新字元時,輸入文字欄位的內容會重新指派給 result
字串。此外,為了產生一致的使用者經驗,setSelection()
方法會將插入點 (跳脫字元) 放在文字欄位中最後選取的字元之後。
textInputHandler()
方法中的第一個 if 陳述式會檢查組合金鑰第二和第五個字元位置的輸入,這兩個位置必須是數字。如果使用者輸入正確,就會呼叫 updateCombination()
方法,並將使用者輸入附加到組合金鑰字串 (result
)。updateCombination()
方法也會將插入點位置移到選取的字元之後。輸入第七個字元之後,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()
會將 TextFields 加入顯示清單中,然後指定要顯示的文字。
- 偵聽程式
linkHandler()
和textInputHandler()
會根據事件類型對事件做出反應。linkHandler()
方法會開啟網頁瀏覽器,並瀏覽到已按下的 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, 03:47 PM Z