Action Script 3.0插入延迟

时间:2012-07-25 11:39:50

标签: xml actionscript-3 delay

我是AS的新手,我试图解决一些问题。

我有下一个脚本

var t:Date = new Date ();
var day=t.getDate();
var month=t.getMonth()+1;
var today=day+"."+month;
var u:Number = 0;

var b_persons:Array = new Array ();

var loader:URLLoader = new URLLoader(new URLRequest("bday.xml"));
var bday_file:XML = new XML();

loader.addEventListener(Event.COMPLETE, endLoad);


function endLoad(all_data:Event)

{
   bday_file = XML(all_data.target.data);

   for each (var person:XML in bday_file.Person) 
   {
      if (person.BD == today) 
      {
          b_persons.push(person.FIO);

          trace (b_persons.length);
      }
   }
}

function assign_txtBdayPerson()
{
    txtBdayPerson.text=b_persons[u];
    trace(b_persons[u]);
    u=u+1;
    if (u >= b_persons.length)
    {clearInterval(delay_assign_txtBdayPerson);}

}

trace ("Test"+b_persons.length);

if (b_persons.length != 0)
    {
        var delay_assign_txtBdayPerson = setInterval(assign_txtBdayPerson,3000);
    }

我的xml文件有两个合适的条件,输出窗口显示下一个序列

测试0比1和最后2

所以似乎

trace ("Test"+b_persons.length); 

早于

运行
function endLoad(all_data:Event) 

已完成

你可以帮我吗?

2 个答案:

答案 0 :(得分:1)

如果你想要/ {need} trace ("Test"+b_persons.length);在XML加载并被解析之后运行,你需要将它放在endload中或者在endload将在其函数结束时调用的函数内。 / p>

如果你不熟悉它们,事件可能看起来不同而且很邪恶,但是一旦你习惯了它们,你就会发现它们更适合工作。

答案 1 :(得分:0)

它发生了,因为trace ("Test"+b_persons.length);在实际加载开始的同一“帧”中执行。当XML已经加载时,至少在下一帧中执行endLoad()回调。这就是Flash中异步流程的本质。