AS3在Caret附加文本

时间:2013-05-10 17:20:26

标签: actionscript-3 flash text

使用flash pro在虚拟键盘上工作,我有点卡住了。 我有办法控制克拉,所以你可以滚动文本字段,但我希望能够在克拉使用代码的地方准确地打字。

以下是我的键盘控件

// 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;
}

1 个答案:

答案 0 :(得分: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;

你可以在一行中完成这一切而不创建四个变量,但我认为这样更容易理解发生了什么。