2011/05/03

[ActionScript] 移動文字欄位的插入點

這幾天遇到一個需求,本來以為是小東西,沒想到花了不少時間。
功能需求是希望能在使用者輸入特定文字後,將特定文字換成特定文字。
比如說在文字欄位輸入的第一個字是 1,就會自動換成「you press 1」。
這倒沒什麼困難,但是置換之後卻發現插入點(文字輸入的游標)卻停留在上例的 y 和 o 中間,也就是停留在原本輸入 1 之後的位置。想當然爾,這 UI 很不友善,置換後應該要將插入點移動到置換後的文字後方,這就花了不少時間。

ActionScript 2.0 範例
// 如果輸入的第一個字是 1,就自動置換成特定文字,
// 並將輸入游標移到文字末端。
// ActionScript 2.0
tfInput.onChanged = function(){
 var input:String = tfInput.text;

 if (input.substr(0,1)=='1') {
  tfInput.text = "you press 1" + input.substr(1);
  Selection.setFocus("tfInput");
  Selection.setSelection(tfInput.text.length, tfInput.text.length);
 }
};
ActionScript 3.0 範例
// 如果輸入的第一個字是 1,就自動置換成特定文字,
// 並將輸入游標移到文字末端。
// ActionScript 3.0
tfInput.addEventListener(Event.CHANGE, evHandler);
function evHandler(e:Event):void {
 var input:String = tfInput.text;
 if (input.substr(0,1)=='1') {
  tfInput.text = "you press 1" + input.substr(1);
  tfInput.stage.focus = tfInput;
  tfInput.setSelection(tfInput.length, tfInput.length);
 }
}

沒有留言:

張貼留言