如何在AS3中自动更新TextFieldFormat?

时间:2017-04-08 16:10:43

标签: actionscript-3 override

每当我更改动态文本字段的text值时,我必须立即为TextFormat分配值,否则文本根本不会显示任何内容。这很好,但很烦人,容易忘记。所以我的第一个问题就是如果我的TextField出现了错误,那么该字段需要立即调用其TextFormat setter(即使它之前已经设置过)。如果我正确地做了一切,那么我的第二个问题是关于我为绕过重复功能所做的简单定制课程。我的方法是覆盖text setter函数,这样每次我分配一个新的文本值时,它也会再次分配textFormat值。我以前只修改过1或2个其他函数,所以我认为这可能是我出错了。

public class DynamicDisplayText extends TextField 
{
    private var textFilter:GradientGlowFilter = new GradientGlowFilter(4,90,[0xFE23C1, 0xFC9625, 0xFCFFBF], [0, .5, 1], [0, 125, 250],15,15,2,2,"outer",true);
    private var _format:TextFormat;

    public function DynamicDisplayText(format:TextFormat, filtersArray:Array, txt:String):void 
    {
        super();
        text = txt;
        _format = format;
        selectable = false;
        mouseEnabled = false;
        embedFonts = true;
        setTextFormat(_format);
        autoSize = TextFieldAutoSize.LEFT;
        filters = filtersArray
    }   

    override public function get text():String { return super.text }
    override public function set text(text:String):void {
        super.text = text 
        super.setTextFormat(_format);   // This seems to be the root of the problem

    }

}

如果我删除super.setTextFormat(_format);并从主文档中调用setTextFormat函数。上课,然后一切正常。我得到错误#2007参数值必须为非null。

感谢您的任何提示!

0 个答案:

没有答案