0

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

1 に答える 1

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;

4 つの変数を作成せずに 1 行ですべてを実行することもできますが、このように何が起こっているのかを理解しやすいと思います。

于 2013-05-10T17:56:52.200 に答える