1

我正在开发一个最初从条形码扫描仪获取输入的 AS3 Flash 游戏。它扫描的数据以一个长字符串的形式出现,使用制表符分隔数据段。扫描仪充当键盘并将字符串输入到隐藏的文本字段中,以便我可以抓取字符串并将其拆分以获取数据。

输入和一切都很好。我遇到的问题是,当文本字段接收到制表符时,它不会将字符插入到文本字段中,而是突出显示文本字段中的任何内容。然后下一组字符会覆盖文本字段中已有的内容。

有没有办法解决?有没有办法让文本字段接受标签作为文字字符?我无法更改条形码分隔字符串中数据的方式。

谢谢你提供的所有帮助。

4

2 回答 2

4

以下内容允许用户在 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 中的任何位置输入选项卡时使用,而不仅仅是结尾。

于 2011-03-22T03:44:49.197 回答
1

(更新的解决方案)

这确实是可以预防的。您可以使用以下文本停止它(假设 Text 是文本字段)。

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);
}
于 2009-03-27T19:02:28.957 回答