Как разрешить символы табуляции в текстовом поле во Flash? - PullRequest
1 голос
/ 27 марта 2009

Я работаю над игрой для AS3 Flash, которая изначально получает данные от сканера штрих-кода. Данные, которые он сканирует, поступают в виде одной длинной строки с использованием вкладок для разделения сегментов данных. Сканер действует как клавиатура и вводит строку в скрытое текстовое поле, так что я могу взять строку и разделить ее на части для получения данных.

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

Есть ли способ обойти это? Есть ли способ заставить текстовое поле принимать вкладку как буквальный символ? Я не могу изменить способ, которым штрих-код разграничивает данные в строке.

Спасибо за любую помощь, которую вы можете оказать.

Ответы [ 2 ]

4 голосов
/ 22 марта 2011

Следующее позволяет пользователю вводить вкладку в любом месте TextField (не только в конце).

someTextField.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, TextKeyFocusChange);
private function TextKeyFocusChange(e:FocusEvent):void
{
    e.preventDefault();         
    var txt:TextField = TextField(e.currentTarget);
    txt.replaceText(txt.caretIndex, txt.caretIndex, "\t");
    txt.setSelection(txt.caretIndex + 1, txt.caretIndex + 1);
}

Примечание. Это решение немного медленнее, чем при использовании appendText, и его следует использовать только в том случае, если вкладки можно вводить в любом месте TextField, а не только в конце.

1 голос
/ 27 марта 2009

(Обновленное решение)

Это действительно превентивно. Вы можете остановить его следующим текстом (при условии, что текст - текстовое поле).

Text.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, TextKeyFocusChange);

private function TextKeyFocusChange(e:FocusEvent):void
{
    e.preventDefault();

    var txt:TextField = TextField(e.currentTarget);

    txt.appendText("\t");
    txt.setSelection(txt.length, txt.length);
}
...