每当我更改动态文本字段的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。
感谢您的任何提示!