我有一个inputTextField,在我的GamePage类的inputTextField中,我希望能够在inputTextField中获取你应该能够编写的文本,并将inputTextField中的文本替换为我的xml中的节点 - FIL。在上面的我的Xml类中,我想要那个转换来自inputTextField的文本的代码,例如。如果我在inputTextField中写“monkey”,我想用猴子替换xml-fil中的{ANIMAL}节点。
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.xml.XMLDocument;
import flash.xml.XMLNode;
public class Xml extends Sprite
{
private var xmlText:TextField;
private var xml:XML;
private var textBox:TextField;
public function Xml()
{
var xmlString:URLRequest = new URLRequest("tales.xml");
var xmlLoader:URLLoader = new URLLoader(xmlString);
xmlLoader.addEventListener("complete", init);
function init(event:Event):void
{
var xml:XML = XML(xmlLoader.data);
var xmlText:TextField = 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);
}
}
}
}
这是我的xml-fil(Google Translated from Swedish):
曾经有{ANIMAL}来自{CITY}。 {ANIMAL}生活在一个小小的红色julhus中,就像圣诞老人一样。 {CITY}也有她的圣诞老人,他的名字是{NAME}。 {ANIMAL}和{NAME}实际上是很久以前最好的朋友,他们住在同一个小红房子里。
答案 0 :(得分:1)
如果您想通过更改InputField
来替换文字,则应该听取Event.CHANGE
的{{1}}。在此侦听器中,您可以重定向到将执行替换的方法。加载XML后,您还应调用此方法,以便删除初始值。
我没有在你的代码示例中看到InputFields,所以这里有一个如何设置它的快速示例。
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;
}
方法中,我正在使用正则表达式,我使用'g'(全局)标志来对任何实例进行Flash搜索,而不仅仅是第一次出现。
请注意,在您的示例中,您有一个私有变量updateTale()
和xmlText
但从不使用它们,因为在xml
侦听器中您创建了两个名为{{1}的本地变量}和init(event:Event)
以及。