Добрый день.
как сделать что бы одна функция работала после другой ?
на примере, есть функции которая разбирает xml файл, есть функция которая записывает данные из xml в массив.. но из-за асинхронности AS, заполняется unidefinded.
Как я понял для этого существуют слушатели,попытался написать так :
Код AS1/AS2:
var array_test:Array=new Array();
var array_test1:Array=new Array();
var image:Array=new Array();
var lisen:Object=new Object();
function array_return(loaded)
{
array_test=['el1','el2','el3'];
for(i=0;i<array_test.length;i++)
trace ("array element: " + i + " content: " + array_test[i]);
// return array_test;
if (loaded) {
xmlNode = this.firstChild;
image = [];
description = [];
total = xmlNode.childNodes.length;
for (i=0; i<total; i++) {
image[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
trace("image["+i+"]= "+image[i]);
description[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
}
} else {
trace("file not loaded!");
}
return image;
}
//start function
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = array_return;
xmlData.load("images.xml");
lisen.onChanged =function() //Вопрос что поставить вместо onChanged
{
trace ("lisen is working");
}
btn1.onPress=function()
{
array_test1=array_return();
for(j=0;j<array_test1.length;j++)
trace ("j: " + j + " con: " + array_test1[j]);
}
array_return.addListener(lisen);
так есстествено не работает, вопрос как сделать?