2

我有一个文本输入字段:

var textfield:TextField = new TextField();
textfield.text = "";
textfield.type = TextFieldType.INPUT;
addChild(textfield);

因为这个文本字段不驻留在主类中,所以我没有用于执行的阶段参考:

textfield.stage.focus = textfield;
or 
stage.focus = textfield

如何强制文本字段在零位置显示闪烁线?

4

4 回答 4

2

您可以在主类中添加对舞台的静态引用并通过它设置焦点(或创建一个专用类以在任何地方获取舞台参考)。

主类代码:

public class MainClass extends Sprite{
    public static var STAGE : Stage;

    public function MainClass(){
        STAGE = stage;
    }
}

文本字段类代码:

MainClass.STAGE.focus = myTextfield;
于 2011-05-09T08:58:28.183 回答
1

这有点像 Flash 播放器的错误,因为如果您使用 stage.focus=textfield 设置焦点,则 textfield 实际上有焦点(您可以写一些东西),但没有闪烁的光标。另一方面,有一个闪烁的光标,但仅当您在播放器中本地启动 swf 时(而不是在浏览器中)。为了告诉人们他们现在可以写东西,您可以自己制作一个光标 - 只需创建一条线,为其设置动画并在有人写第一个字母时隐藏。

于 2011-05-09T13:31:56.610 回答
0

光标焦点有时确实有效,这更令人沮丧。我有两个几乎相同的应用程序。一个不起作用的动画正在运行。这可能是一个冲突。

于 2013-12-29T16:01:25.627 回答
0

最后我得到了解决方案

试试这个代码它会工作

public function SetFocus(mc:TextField):void{            
    addEventListener(Event.ENTER_FRAME,focus);
    function focus(E:Event){
        stage.focus=mc;
        if(mc.name.toString()==stage.focus.name.toString()){
            removeEventListener(Event.ENTER_FRAME,focus);   
        }
    }
}

您必须命名文本字段,然后您才能轻松使用它

于 2017-01-12T17:24:07.273 回答