본문 바로가기

Actionscript3.0

TextField selection 내용 추출하기


야후에서 나온 미니사전에서, 단어에 밑줄 긋는 기능을 구현해 보려고 참고하며 끄적였던 파일 입니다. TextField 에서 제공하는 메소드를 사용하여 구현하였습니다.

TextField.selectionBeginIndex   :: 텍스트 필드의 선택 시작 위치 property
TextField.selectionEndIndex     :: 텍스트 필드의 선택 끝 위치 property
String.substring(startIndex, endIndex)  :: String을 startIndex와 endIndex를 참조하여 부분 추출하기
비교) String.substr(startIndex, length)  :: String을 startIndex 부터 length 만큼 추출하기

 

  1. import flash.text.TextField;
  2. import flash.events.Event;
  3. import flash.events.FocusEvent;
  4.  
  5. var originInfo = {isFocus:false, beginIndex:0, endIndex:0};
  6. origin_txt.addEventListener(FocusEvent.FOCUS_IN, originFocusIn);
  7. origin_txt.addEventListener(FocusEvent.FOCUS_OUT, originFocusOut);
  8. origin_txt.addEventListener(Event.ENTER_FRAME, originCheckSelection);
  9.  
  10. function originFocusIn(event:FocusEvent):void{
  11.         originInfo.isFocus = true;
  12. }
  13. function originFocusOut(event:FocusEvent):void{
  14.         originInfo.isFocus = false;
  15. }
  16. function originCheckSelection(event:Event):void{
  17.         if(originInfo.isFocus){
  18.                 if(originInfo.beginIndex != event.target.selectionBeginIndex ||
  19.                    originInfo.endIndex != event.target.selectionEndIndex){
  20.                         select_txt.text = event.target.text.substring(event.target.selectionBeginIndex, event.target.selectionEndIndex);
  21.                         originInfo.beginIndex = event.target.selectionBeginIndex;
  22.                         originInfo.endIndex = event.target.selectionEndIndex;
  23.                 }
  24.         }else{
  25.                 select_txt.text = "";
  26.                 originInfo.beginIndex = 0;
  27.                 originInfo.endIndex = 0;
  28.         }
  29. }