Если вы хотите заменить текст изменением InputField
, вам следует прослушать Event.CHANGE
из InputFields
.В этом слушателе вы можете перенаправить метод, который будет выполнять замену.После загрузки XML вы должны также вызвать этот метод, чтобы удалить начальные значения.
Я не видел InputFields в вашем примере кода, так что вот краткий пример того, как вы можете его настроить.
private var animalInputField:TextField;
private var cityInputField:TextField;
private var nameInputField:TextField;
private var xmlText:TextField;
public function Xml()
{
var xmlString:URLRequest = new URLRequest("tales.xml");
var xmlLoader:URLLoader = new URLLoader(xmlString);
xmlLoader.addEventListener(Event.COMPLETE, init);
function init(event:Event):void
{
xml = XML(xmlLoader.data);
xmlText = new TextField();
addChild(xmlText);
xmlText.width = 500; xmlText.height = 500; xmlText.x = 5; xmlText.y = 100;
xmlText.text = xml.tale;
XML.ignoreWhitespace = true;
var format:TextFormat = new TextFormat();
format.color = 0x990000;
format.size = 18;
xmlText.setTextFormat(format);
// create inputfields
animalInputField = createInputField();
cityInputField = createInputField();
nameInputField = createInputField();
cityInputField.x = 100;
nameInputField.x = 200;
updateTale();
}
}
private function createInputField() : TextField
{
var inputField:TextField = TextField(addChild(new TextField()));
inputField.type = TextFieldType.INPUT;
inputField.text = '...';
inputField.addEventListener(Event.CHANGE, onInputChanged);
return inputField;
}
private function onInputChanged(e:Event):void
{
updateTale();
}
private function updateTale() : void
{
var tale:String = xml.tale;
tale = tale.replace(/{ANIMAL}/g, animalInputField.text);
tale = tale.replace(/{CITY}/g, cityInputField.text);
tale = tale.replace(/{NAME}/g, nameInputField.text);
xmlText.text = tale;
}
В методе updateTale()
я использую регулярное выражение, где я использую флаг 'g' (глобальный) , чтобы выполнить поиск Flash по любому экземпляру, а не только по первому вхождению..
Обратите внимание, что в вашем примере у вас есть приватные переменные xmlText
и xml
, но вы никогда их не используете, потому что в вашем init(event:Event)
слушателе вы создаете две локальные переменные с именами xmlText
и xml
также.