设置TextField文本属性时触发事件

时间:2014-01-29 15:39:00

标签: actionscript-3

我在舞台上有TextField个实例。该字段中的副本是由我无法访问的第三方系统从我的项目外部更新的。我不确切知道这是如何实现的,但我需要知道它何时发生。

我想要一种方法来告诉文本何时在字段中更新,以便我可以根据其新内容格式化和定位字段。我试过了

myTextField.addEventListener(Event.CHANGE, updateMethod);

但似乎这只会在文本被直接用户交互更改时触发,而不是我从外部注入的那种注释。

有没有什么方法可以听取myTextField.text的作业,而只是用户通过鼠标/键盘进行的更改?

欣赏任何建议。在此先感谢:)

1 个答案:

答案 0 :(得分:1)

您可以使用自己的类包装它,而不是直接访问文本字段,并在触发setter时调度事件:(未经测试的代码)

public class MyTextField extends EventDispatcher {

    private var textField:TextField;

    public MyTextField(t:TextField) {
        textField = t;
    }

    public function set text(s:String) {
        textField.text = s;
        var e:Event = new Event(Event.CHANGE);
        dispatchEvent(e);
    }

    public function get text():String {
        return textField.text;
    }

}

以及代码中的其他位置:

var mytf:MyTextField = new MyTextField(stage.myTextField); //stage.myTextField is the reference to the text field on the stage

mytf.addEventListener(Event.CHANGE, function(e:Event) { /* get event */ });

// don't use stage.myTextField.text to set text, instead, use:
mytf.text = "setting text!"; //this will trigger the event callback above