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.firstChild.childNodes;
            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);
LVL 3
marcparilloAsked:
Who is Participating?
 
FLAASHERConnect With a Mentor Commented:
function flaasher() {
      var my_xml = new XML();
      my_xml.ignoreWhite = true;
      my_xml.onLoad = function(success) {
            if (success) {
                  var items = my_xml.firstChild.firstChild.childNodes;
                  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");
}


setInterval(_root,"flaasher",1000);//this line will load ur XML file every escond .... if u want eavery 60 esconde multiplay*60 .... so will be setInterval(_root,"flaasher",60000);
0
 
marcparilloAuthor Commented:
Thanks FLAASHER!
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?




0
 
Aneesh ChopraConnect With a Mentor Commented:
Just call it once manually before calling it using setInterval

for example:

-----------
flaasher();
setInterval(_root,"flaasher",60000);
-----------


- Aneesh
0
 
marcparilloAuthor Commented:
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.removeMovieClip 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?






0
 
marcparilloAuthor Commented:
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.

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.