2

如标题所说。如何在运行时将焦点设置在 TLFTextField 上?

我已经做了一些研究,并找到了一些这样的问题,例如如何将焦点设置到 TLFTextfield 对象

在少数论坛上,他们说要使用此代码

stage.focus = txt;

或者

txt.stage.focus = txt;

或者

txt.textFlow.interactionManager.setFocus();

但没有一个对我有用..我会尝试简单的项目但仍然失败..

我需要MovieClip用 a显示 aTLFTextField并专注于它。所以用户只需键入即可编辑 TLFTextfield。

我的代码:

public function TFLayer() {
    tf = new TLFTextField();
    tf.width = 400;
    tf.height = 30;
    tf.x = 300;
    tf.y = 300;
    tf.border = true;
    tf.type = TextFieldType.INPUT;
    tf.backgroundColor = 0xffffff;
    tf.text = "Lorem ipsum";
    addChild(tf);

    tf.textFlow.interactionManager.setFocus();
}
4

2 回答 2

5

给定一个可编辑的TLFTextField名为tf,您可以通过以下方式启用焦点:

import flashx.textLayout.edit.EditManager;

tf.textFlow.interactionManager = new EditManager();
tf.textFlow.interactionManager.selectRange(0, 0);
tf.textFlow.interactionManager.setFocus();

使用这种方法,文本字段被聚焦,准备接收来自键盘的输入;但是,光标不会闪烁。因此,没有视觉上的焦点指示。

TLFTextFields对于用户输入来说不是最优的。考虑使用TextFieldorTextArea代替。

于 2013-06-10T17:57:34.053 回答
0

感谢 Jason Sturges,现在我有了简化的答案。在测试了他的代码后,我决定进一步试验,结果我只需要 2 行代码就可以了。

    tf.textFlow.interactionManager.setFocus();
    tf.setSelection(tf.text.length, tf.text.length);.

无需导入flashx.textLayout.edit.EditManager. 很奇怪,因为interactionManager实际上需要EditManager工作。

但是这段代码对我来说很好。我用 FlashDevelop 编译它。我的事件没有添加textLayout.swc到我的库中

于 2013-06-10T18:58:00.623 回答