2010年11月14日 星期日

[AS3] 擷取文字輸入,並顯示於另一TextField類別實體

TextField.addEventListener(TextEvent.TEXT_INPUT, textInputHandler)
每當使用者在文字欄位中輸入文字,或在 HTML 文字欄位中按下超連結時,物件就會傳送 TextEvent 物件。
注意:Delete 或 Backspace 鍵不會傳送這個事件。

於黃色文字欄位輸入文字,輸入之文字將出現在白色文字欄位,但英文字元的出現會慢一個字元,
中文字則可同步。但貼上剪貼簿內中文字也會慢一步顯示。



package 
{
 //
 import flash.display.Sprite;
 import flash.text.TextField;
 import flash.text.TextFieldType;
 import flash.text.TextFieldAutoSize;
 import flash.events.TextEvent;
 import flash.display.Stage;
 //'
 public class Text_INPUT_1 extends Sprite
 {
  //
  private var inputTf:TextField = new TextField();
  private var outputTf:TextField = new TextField();
  private var inputStr:String = "在這裡鍵入文字";
  //
  public function Text_INPUT_1()
  {
   captureText();
  }
  //
  private function captureText():void
  {
   inputTf.type = TextFieldType.INPUT;
   inputTf.background = true;
   inputTf.backgroundColor = 0xffff00;
   inputTf.autoSize = TextFieldAutoSize.LEFT;
   inputTf.width = 260;
   inputTf.wordWrap = true;
   inputTf.x = 10;
   inputTf.y = 10;
   addChild(inputTf);
   inputTf.text = inputStr;
   //***Delete 或 Backspace 鍵不會傳送TEXT_INPUT事件。
   inputTf.addEventListener(TextEvent.TEXT_INPUT, textInputCapture);
  }
  //
  private function textInputCapture(e:TextEvent):void
  {
   //var str = inputTf.text;
   var str = e.currentTarget.text;
   creatOutputFt(str);
  }
  //
  private function creatOutputFt(str:String):void
  {
   outputTf.background = true;
   outputTf.autoSize = TextFieldAutoSize.LEFT;
   outputTf.width = 260;
   outputTf.wordWrap = true;
   outputTf.x = 280;
   outputTf.y = 10;
   addChild(outputTf);
   outputTf.text = str;
  }

 }

}


適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.events.TextEvent.TextEvent

適用於 Adobe Flash Professional CS5 的 ActionScript 3.0 參考__flash.text.TextFieldAutoSize

沒有留言: