首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

一段flash代码,请高人帮忙分析。该如何解决

2012-03-06 
一段flash代码,请高人帮忙分析。我有一段如下的flash代码。当代码执行完“doc.onLoad function(success:Boo

一段flash代码,请高人帮忙分析。
我有一段如下的flash代码。当代码执行完“doc.onLoad = function(success:Boolean)”这行后,会跳到“gotoAndPlay(3)”这行去执行,之后再跳回“if (success)”这行来执行。请flash的大牛们解释一下,为什么执行完“doc.onLoad = function(success:Boolean)”这行后,不去执行“if (success)”这行呢。刚接触flash,对其不甚了解。
----------
yearList = new Array();
xml_Holidays1 = new Array();
xml_Holidays2 = new Array();
xml_Dutydays1 = new Array();
xml_Closedays1 = new Array();
var doc = new XML();
doc.ignoreWhite = true;
doc.load("calendar.xml");
doc.onLoad = function(success:Boolean) {
if (success) {
yearList = doc.childNodes[0].childNodes;
for(var i = 0;i < yearList.length;i++){
xml_Holidays1[i] = doc.childNodes[0].childNodes[i].childNodes[0].firstChild.nodeValue;
xml_Holidays2[i] = doc.childNodes[0].childNodes[i].childNodes[1].firstChild.nodeValue;
xml_Dutydays1[i] = doc.childNodes[0].childNodes[i].childNodes[2].firstChild.nodeValue;
xml_Closedays1[i] = doc.childNodes[0].childNodes[i].childNodes[3].firstChild.nodeValue;
}
  }
};
gotoAndPlay(3);

[解决办法]

C# code
doc.onLoad = function(success:Boolean) {if (success) {yearList = doc.childNodes[0].childNodes;for(var i = 0;i < yearList.length;i++){xml_Holidays1[i] = doc.childNodes[0].childNodes[i].childNodes[0].firstChild.nodeValue;xml_Holidays2[i] = doc.childNodes[0].childNodes[i].childNodes[1].firstChild.nodeValue;xml_Dutydays1[i] = doc.childNodes[0].childNodes[i].childNodes[2].firstChild.nodeValue;xml_Closedays1[i] = doc.childNodes[0].childNodes[i].childNodes[3].firstChild.nodeValue;  }  gotoAndPlay(3);  }};
[解决办法]
改一下位置就可以了吧,我想楼主的想法是等数据加载完后进入第三帧吧。事件处理程序是在事件发生时执行的,你的代码中,在事件发生前会执行gotoAndPlay(3);
[解决办法]
success == false 了,难道是。。
[解决办法]
flash是个单线程的,只有当加载的是第三方文件而响应的事件才是异步的,所以你执行完doc.load("calendar.xml");后,会直接执行gotoAndPlay(3);,if (success)这个事件代码的响应肯定是需要时间的并且需要的时间远大于执行下一行代码的间隔时间

热点排行