Проблема с ошибкой # 1067: неявное приведение значения типа String к несвязанному типу XML - AS3 - PullRequest
3 голосов
/ 08 марта 2010

Я создаю небольшой флеш-переводчик языка. Я делаю перекрестные ссылки на дочерние элементы родительского узла 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);
 }
}

1 Ответ

4 голосов
/ 09 марта 2010

Вы должны изменить for (... in myXML.children()) на for каждый (... in myXML.children()). Существует небольшая разница между использованием for (... in ...) и for each (... in ...), но я не совсем уверен, какие они есть. Циклы ведут себя по-разному и при переборе словаря / объекта: первый дает ключи, а второй дает значения.

...