2010-03-08 4 views
3

Je construis un petit traducteur de langage basé sur le flash. Je renvoie les enfants d'un nœud parent XML une fois que l'utilisateur tape un mot ou une phrase dans le champ de texte. Le résultat sera une traduction de ce mot ou de cette phrase renvoyé dans le champ de texte output_txt.Problème avec l'erreur # 1067: Coercion implicite d'une valeur de type String à un type non apparenté XML - AS3

Le problème est, Flash me donne cette erreur concernant le type de valeur d'une chaîne à un type XML non lié. Pourquoi? Aucune suggestion? Merci!

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); 
} 
} 

Répondre

4

Vous devez changer for (... in myXML.children()) pour forchaque(... in myXML.children()). Il y a une différence subtile entre l'utilisation de for (... in ...) et for each (... in ...), mais je ne suis pas exactement sûr de ce qu'ils sont. Les boucles se comportent différemment lors de l'itération sur les dictionnaires/objets: le premier donne les clés, tandis que le second donne les valeurs.

+0

Ne ressemble pas à ce que vous aurez marqué comme la réponse, ce qui est dommage car cela a fonctionné pour moi. – paul

Questions connexes