Работая на виртуальной клавиатуре с помощью 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;
}
0
Tropzilla 10 Май 2013 в 21:20

1 ответ

Лучший ответ

Вы можете сделать это так:

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;

Вы можете сделать все это в одной строке, не создавая четырех переменных, но я думаю, что так легче понять, что происходит.

0
BadFeelingAboutThis 10 Май 2013 в 22:04