如何在 Flash 的文本字段中允许使用制表符?

发布于 2024-07-15 08:35:35 字数 311 浏览 6 评论 0原文

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

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

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

谢谢你提供的所有帮助。

I am working on an AS3 Flash game that initially takes a input from a barcode scanner. The data that it scans comes in as one long string using tabs to separate the data segments. The scanner acts as a keyboard and inputs the string into a hidden textfield so that I can grab the string and split it apart to get the data.

The input and everything works great. The issue that I am running into is that when the the textfield receives a tab character, instead of inserting the character into the textfield it highlights whatever is in the textfield. Then the next set of characters overwrite what was already in the textfield.

Is there any way around this? Is there some way to make the textfield accept the tab as a literal character? I cannot change the way the barcode delimits the data in the string.

Thanks for any help you can give.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

偏爱自由 2024-07-22 08:35:35

下面的代码允许用户在 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 中的任意位置(而不仅仅是末尾)输入制表符时才应使用。

The following lets the user type a tab anywhere in the TextField (not just the end.)

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

Note: This solution is a little slower than using appendText and should only be used if tabs can be entered anywhere in the TextField, not just the end.

简美 2024-07-22 08:35:35

(更新的解决方案)

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

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

(Updated solution)

That is indeed preventabe. You can stop it with following text (assuming Text is the textfield).

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);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文