当用户更改它时,我需要修改输入 TLF 文本字段中的文本。例如,每次用户添加或删除字符时,我都会尝试将其设为大写:
import fl.text.TLFTextField;
import flashx.textLayout.formats.TextLayoutFormat;
import flashx.textLayout.elements.TextFlow;
var myTLFTextField:TLFTextField = new TLFTextField();
addChild(myTLFTextField);
myTLFTextField.x = 10;
myTLFTextField.y = 10;
myTLFTextField.width = 200
myTLFTextField.height = 100;
myTLFTextField.text = "This is my text";
var myFormat:TextLayoutFormat = new TextLayoutFormat();
myFormat.textIndent = 8;
myFormat.color = 0x336633;
myFormat.fontFamily = "Arial, Helvetica, _sans";
myFormat.fontSize = 24;
var myTextFlow:TextFlow = myTLFTextField.textFlow;
myTextFlow.hostFormat = myFormat;
myTextFlow.flowComposer.updateAllControllers();
//--
myTLFTextField.addEventListener(Event.CHANGE, this.onTextFieldChange);
function onTextFieldChange(event:Event):void
{
myTLFTextField.text = myTLFTextField.text.toUpperCase();
}
前面的代码//--
取自TLFTextField 文档,这是页面上的第一个示例。
当我尝试编辑文本时,它确实变成了大写,但之后文本字段停止响应任何输入并且输出显示
TypeError:错误 #1009:无法访问空对象引用的属性或方法。在 flashx.textLayout.container::TextContainerManager/getController() 在 flashx.textLayout.container::TextContainerManager/mouseDownHandler()
当我注释掉该addEventListener
行时,一切似乎都工作正常。
这是否意味着无法像经典文本字段那样在用户输入事件上更改 TLF 文本字段中的文本?