2013-05-10 3 views
0

플래시 프로를 사용하는 가상 키보드에서 작업하고 다소 붙어 있습니다. 캐럿을 제어 할 수있는 방법이 있으므로 텍스트 필드를 스크롤 할 수 있지만 캐럿이 코드를 사용하는 곳의 문자를 정확히 펀치 할 수 있기를 바랍니다. 다음은 AS3 Caret에서 텍스트 추가

내 키보드가

// keyboard controls 
for (var i=0; i<lettersSmall.length; i++) 
{ 
    this["key_" + lettersSmall.charAt(i)].addEventListener(MouseEvent.MOUSE_UP,_keys); 
    letterButtonSmall["key_" + lettersSmall.charAt(i)] = lettersSmall.charAt(i); 
    letterButtonCaps["key_" + lettersSmall.charAt(i)] = lettersCaps.charAt(i); 
} 



function _keys(event:MouseEvent):void 
{ 
    curTextPos = textSelect.caretIndex; 
    strehrows3(); 
    stage.focus = textSelect; 

    textSelect.setSelection(curTextPos,curTextPos); 
    if (electoff.currentFrame == 2) 
    { 
     ajWidth(event); 
    } 
    if (terminalinput.currentFrame == 2) 
    { 
     TrWidth(null); 
    } 
    if (control == "on" && menu1.visible == false) 
    { 
     if (! shift) 
     { 
      textSelect.appendText(letterButtonSmall[event.target.name]); 
      inputMaxWidth = textSelect.width; 
     } 
     else 
     { 
      textSelect.appendText(letterButtonCaps[event.target.name]); 

      shift = false; 
      inputMaxWidth = textSelect.width; 
     } 
     savedTxt = textSelect.text; 
     textSelect.setSelection(textSelect.length,textSelect.length); 
     if (textSelect.width <= 134.05) 
     { 
      //textSelect.autoSize = TextFieldAutoSize.LEFT; 
      textSelect.x = 1.2; 
     } 
     if (textSelect.width >= 134.05) 
     { 
      //textSelect.autoSize = TextFieldAutoSize.LEFT; 
      textSelect.x = 1.2-(textSelect.width-134.05); 
     } 
    } 
    textSelect.setSelection(textSelect.length,textSelect.length); 
    if (electoff.currentFrame == 2) 
    { 
     ajWidth(event); 
    } 
    if (terminalinput.currentFrame == 2) 
    { 
     TrWidth(null); 
    } 

    focuser(); 
    strehrows3(); 
    _fontSize(); 
    textSelect.width = inputMaxWidth; 
} 

답변

0

당신은 이런 식으로 할 수있는 컨트롤입니다 :

var inputStr:String = event.target.name; //This looks like it's value of your key pressed? 
var caret:int = textSelect.textField.caretIndex; 
var afterCaretText:String = textSelect.text.substr(caret); 
var beforeCaretText:String = textSelect.text.substr(0,caret); 

textSelect.text = beforeCaretText + inputStr + afterCaretText; 
네 개의 변수를 만들지 않고 모두 한 줄에이 작업을 수행 할 수 있지만, 나는 그것이보다 쉽게 ​​생각

이런 일이 벌어지고있는 것을 이해하십시오.