2010-03-08 43 views
3

我正在构建一个小型的基于Flash的语言翻译器。一旦用户在文本字段中输入单词或短语,我就会交叉引用XML父节点的子节点。结果将是返回到output_txt文本字段的该词或短语的翻译。错误#1067:将类型为String的值隐式强制为不相关的类型XML - AS3

问题是,Flash向我提供了有关字符串的值类型与无关类型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); 
} 
} 

回答

4

你必须改变for (... in myXML.children())for每个(... in myXML.children())。使用for (... in ...)for each (... in ...)之间存在细微差别,但我不确定它们是哪一个。当迭代字典/对象时,循环的行为也不同:前者给出键,而后者给出值。

+0

看起来你不会看到这个标记为答案,这太糟糕了,因为它为我工作。 – paul 2012-10-08 13:37:38

相关问题