marcparillo
asked on
XML reload
I'm looking for a solution to reload XML data every 60 seconds.
The code below appears to work only when I preview the swf file from Flash.
However, the code doesn't work when the swf is actually published in a browser.
The code loads an XML file and creates a dynamic menu list. The problem may be that the dynamic menu list needs to be deleted and refreshed along with the XML, but I'm not sure how to do that. My amateur solution was to replay the frame containing the actionscript code below every time I wanted to refresh -- but it's apparently not that simple.
ALL THIS CODE ON _ROOT.FRAME50
var item_spacing = 30;
var item_count = 0;
var xspace = 1;
var my_xml = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success) {
if (success) {
var items = my_xml.firstChild.firstChi ld.childNo des;
for (var i = 0; i<items.length; i++) {
var item_mc = menu_mc.attachMovie("menu_ item 2", "item"+item_count, item_count);
item_mc._x = xspace;
item_mc._y = item_count*item_spacing;
item_mc.location.text = items[i].attributes.type;
item_count++;
item_mc.main_btn.location_ text = items[i].attributes.type;
item_mc.main_btn.onRelease = DisplayInfo;
}
}
};
my_xml.load("http://www.DOMAIN.com/feedMap/xmlFeed.xml");
var displayTime = 60;
countDown = function(message)
{
_root.timeDisplay.text = "Next update in "+displayTime+" seconds";
displayTime--;
if (displayTime == 0){
clearInterval(timer);
delete my_xml;
gotoAndPlay(50);
}
}
timer = setInterval(countDown, 1000);
The code below appears to work only when I preview the swf file from Flash.
However, the code doesn't work when the swf is actually published in a browser.
The code loads an XML file and creates a dynamic menu list. The problem may be that the dynamic menu list needs to be deleted and refreshed along with the XML, but I'm not sure how to do that. My amateur solution was to replay the frame containing the actionscript code below every time I wanted to refresh -- but it's apparently not that simple.
ALL THIS CODE ON _ROOT.FRAME50
var item_spacing = 30;
var item_count = 0;
var xspace = 1;
var my_xml = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success) {
if (success) {
var items = my_xml.firstChild.firstChi
for (var i = 0; i<items.length; i++) {
var item_mc = menu_mc.attachMovie("menu_
item_mc._x = xspace;
item_mc._y = item_count*item_spacing;
item_mc.location.text = items[i].attributes.type;
item_count++;
item_mc.main_btn.location_
item_mc.main_btn.onRelease
}
}
};
my_xml.load("http://www.DOMAIN.com/feedMap/xmlFeed.xml");
var displayTime = 60;
countDown = function(message)
{
_root.timeDisplay.text = "Next update in "+displayTime+" seconds";
displayTime--;
if (displayTime == 0){
clearInterval(timer);
delete my_xml;
gotoAndPlay(50);
}
}
timer = setInterval(countDown, 1000);
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks. That works -- but now I have a new issue:
The dynamic list of buttons that are created within the flaasher() function are not "erased" to reveal the refreshed list of buttons.
I've tried _root.mc_menu.removeMovieC lip to clear the stage but that doesn't work.
Is there a command to remove the dynamic menu (menu_mc.attachMovie("menu _item 2", "item"+item_count, item_count) so the new, reloaded XML can create a new list when flaasher() is called every 60 seconds?
The dynamic list of buttons that are created within the flaasher() function are not "erased" to reveal the refreshed list of buttons.
I've tried _root.mc_menu.removeMovieC
Is there a command to remove the dynamic menu (menu_mc.attachMovie("menu
ASKER
Ahh -- I figured it out. It was a variable issue.
One other mention, in case someone else has a similar problem:
The reloading of XML worked in Firefox but not IE because of a caching problem. I didn't know browsers cached loaded variables differently.
I adjusted the following code to include a random number to trick the swf into not using the cached XML:
var n = random(1000000);
my_xml.load("http://www.nbcnewschannel.com/feedMap/xmlFeed.xml?"+n,"");
Again, thanks for your help!
I'll split up the points.
One other mention, in case someone else has a similar problem:
The reloading of XML worked in Firefox but not IE because of a caching problem. I didn't know browsers cached loaded variables differently.
I adjusted the following code to include a random number to trick the swf into not using the cached XML:
var n = random(1000000);
my_xml.load("http://www.nbcnewschannel.com/feedMap/xmlFeed.xml?"+n,"");
Again, thanks for your help!
I'll split up the points.
ASKER
That makes sense.
I see setInterval will call the function after 60 seconds.
But how do I call the flaasher() function when the swf file loads initially?