我正在构建一个基于Flash的小型语言翻译器。一旦用户在文本字段中键入单词或短语,我就会交叉引用XML父节点的子节点。结果将是返回到output_txt文本字段的单词或短语的翻译。
问题是,Flash将关于String的值类型的错误提供给不相关的XML类型。为什么?有什么建议?谢谢!
generate_mc.buttonMode=true;
var English:String;
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("Language.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void {
myXML=new XML(e.target.data);
}
var langObj:Object = new Object();
for (var entry:XML in myXML.children()) { //getting error #1067 on the XML========
langObj[entry.english.toString()]=entry.cockney.toString();
}
generate_mc.addEventListener(MouseEvent.CLICK, onClick);
function onClick(event:MouseEvent) {
English=textfield_txt.text;
if (langObj[textfield_txt.text]!=undefined) {
output_txt.text = myXML.cockney; //this is where the translation will appear. is this correct syntax?===============
} else {
trace( "the key is not defined: " + textfield_txt.text);
}
}
答案 0 :(得分:4)
您必须将for (... in myXML.children())
更改为for
每个 (... in myXML.children())
。使用for (... in ...)
和for each (... in ...)
之间存在细微差别,但我不确定它们是什么。在迭代dictionarys / object时循环的行为也不同:前者给出了键,后者给出了值。