[英]Autorefresh XML data in SWF Action Script 2.0
因此,我正在使用AS 2.0开发SWF。 它需要从XML文件访问汇率。 我已经有一个setInterval,它可以遍历XML子节点。 因此,我已经在代码中运行了一个计时器。 我需要设置另一个计时器以重新加载XML,以便对XML的更改不断更新,例如每20秒更新一次。 当我尝试这样做时,计时器会重叠。 你们能帮忙吗? 谢谢
这是我当前的代码:
var index:Number = 0;
var myxml:XML = new XML();
myxml.ignoreWhite = true;
myxml.onLoad = function(success:Boolean):Void{
loadData();
setInterval(loadData, 3000);
};
function loadData(){
var messages:XMLNode = myxml.firstChild;
if(index >= messages.childNodes.length)
index = 0;
var my_message:XMLNode = messages.childNodes[index];
_root.status_1.htmlText = my_message.childNodes[0].firstChild.nodeValue;
_root.status_2.htmlText = my_message.childNodes[1].firstChild.nodeValue;
_root.status_3.htmlText = my_message.childNodes[2].firstChild.nodeValue;
_root.status_4.htmlText = my_message.childNodes[3].firstChild.nodeValue;
_root.status_5.htmlText = my_message.childNodes[4].firstChild.nodeValue;
_root.status_6.htmlText = my_message.childNodes[5].firstChild.nodeValue;
index++;
}
myxml.load("data.xml");
我的XML文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<messages>
<message>
<item>1.38329</item>
<item>1.58344</item>
<item>1.06960</item>
<item>93.7300</item>
<item>0.9864</item>
<item></item>
</message>
<message >
<item>1.36789</item>
<item>1.56734</item>
<item>1.03752</item>
<item>93.7267</item>
<item>0.97836</item>
<item></item>
</message>
<message >
<item>1.38126</item>
<item>1.59104</item>
<item>1.05380</item>
<item>93.5755</item>
<item>0.9923</item>
<item></item>
</message>
<message >
<item>1.38126</item>
<item>1.29789</item>
<item>1.5423</item>
<item>1.07123</item>
<item>93.7268</item>
<item>0.9867</item>
<item></item>
</message>
<message >
<item>1.38329</item>
<item>1.514762</item>
<item>1.07451</item>
<item>93.7277</item>
<item>0.9975</item>
<item></item>
</message>
</messages>
我建议以下代码:
var iCurrentNodeLoading:Number;
var intervalNextNode:Number;
var intervalReloadXML:Number;
var myxml:XML = new XML();
myxml.ignoreWhite = true;
myxml.onLoad = mx.utils.Delegate.create(this, onXMLLoadedEvent);
function onXMLLoadedEvent(success:Boolean):Void{
if (success) {
iCurrentNodeLoading = 0;
loadNextNode();
}
};
function loadNextNode() {
if (intervalNextNode != undefined) clearInterval(intervalNextNode);
var messages:XMLNode = myxml.firstChild;
if (iCurrentNodeLoading >= messages.childNodes.length) iCurrentNodeLoading = 0;
var my_message:XMLNode = messages.childNodes[iCurrentNodeLoading];
_root.status_1.htmlText = my_message.childNodes[0].firstChild.nodeValue;
_root.status_2.htmlText = my_message.childNodes[1].firstChild.nodeValue;
_root.status_3.htmlText = my_message.childNodes[2].firstChild.nodeValue;
_root.status_4.htmlText = my_message.childNodes[3].firstChild.nodeValue;
_root.status_5.htmlText = my_message.childNodes[4].firstChild.nodeValue;
_root.status_6.htmlText = my_message.childNodes[5].firstChild.nodeValue;
iCurrentNodeLoading++;
intervalNextNode = setInterval(loadNextNode, 3000);
}
function reloadXML(){
if (intervalReloadXML != undefined) clearInterval(intervalReloadXML);
myxml.load("data.xml");
intervalNextNode = setInterval(reloadXML, 20000);
}
reloadXML();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.