Мне нужен текст в текстовом поле ввода TLF, которое нужно изменить, когда пользователь его изменит. Как, например, я пытаюсь сделать это прописным каждый раз, когда пользователь добавляет или удаляет символ:Почему этот код TLFTextField работает только один раз?
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();
}
код, который идет перед //--
берется из , самых первого примера на этой странице.
При попытке редактировать текст, он стал прописным, но после того, что текстовое поле перестает отвечать на любой вход и выход говорит
TypeError: Error #1009: Cannot access a property or method of a null object reference. at flashx.textLayout.container::TextContainerManager/getController() at flashx.textLayout.container::TextContainerManager/mouseDownHandler()
Когда я закомментируйте addEventListener
линию, все, как представляется, работайте отлично.
Означает ли это, что невозможно внести изменения в текст в текстовом поле TLF при вводе пользовательского ввода, как это возможно с классическими текстовыми полями?
Может быть бесконечным циклом. Попробуйте проверить, действительно ли случай должен быть изменен в вашем обратном вызове; 'if (myTLFTextField.text.toUpperCase()! = myTLFTextField.text)' – Dave
@Dave Ну, мой вопрос не в прописном (есть встроенная функция, чтобы держать текст в верхнем регистре в любом случае), но больше о внесении изменений в текст на пользователе входные события. Если вы попытаетесь внести изменения каким-либо другим способом, например добавить букву «A» в конец текста вместо того, чтобы сделать ее прописной, вы столкнетесь с такой же проблемой. – Pleo
хорошо, но моя точка все еще стоит; может быть, что, изменив текст, вы вызываете обратный вызов, который меняет текст, который (...). Я не уверен, что это проблема, но вы можете проверить, нарушив этот цикл. Если окажется, что это проблема, вы можете попытаться изменить событие, которое вы слушаете, или использовать маркер переменной (например, если он уже включен в обратном вызове). – Dave