4 Replies Latest reply on Jan 29, 2007 7:15 PM by Newsgroup_User

    Is it impossible to reload XML data?

    Level 7
      Hi, this is modificated (shortened) version of Todd Dominey's Slideshow
      script.
      His script is working fine, but I wanted to add some lines to it, so that
      XML would be loading continiously at every loop, to be sure that XML is up
      to date (cause XML is being updated very often through another application).
      So I created new function called "loadXMLagain", and called it from
      "imageGen" function, so that loadXMLagain function is called every time,
      when p==data.length.
      BUT it is not working. Is it impossible to load XML and again and parse it
      to an Array at every loop?
      Or what I'm doing wrong?

      // parent container
      var container_mc = this.createEmptyMovieClip("container",0);
      // movie clip containers
      container_mc.createEmptyMovieClip("loader1_mc",2);
      container_mc.createEmptyMovieClip("loader2_mc",1);

      // preload watcher
      this.createEmptyMovieClip("watcher_mc",100);

      // load xml
      images_xml = new XML();
      images_xml.ignoreWhite=true;
      images_xml.onLoad = parse;
      images_xml.load("images.xml");

      function loadXMLagain(){
      p=0;
      images_xml = new XML();
      images_xml.ignoreWhite=true;
      images_xml.onLoad = parse;
      images_xml.load("images.xml");

      }

      function parse(success) {
      if (success) {
      imageArray = new Array();
      var root = this.firstChild;
      _global.numPause = Number(this.firstChild.attributes.timer * 1000);
      _global.looping = this.firstChild.attributes.looping;
      _global.fadetime = Number(this.firstChild.attributes.fadetime);
      _global.xpos = Number(this.firstChild.attributes.xpos);
      _global.ypos = Number(this.firstChild.attributes.ypos);
      var imageNode = root.lastChild;
      var s=0;
      while (imageNode.nodeName != null) {
      imageData = new Object;
      imageData.path = imageNode.attributes.path;
      imageArray[s]=imageData;
      imageNode = imageNode.previousSibling;
      s++;
      }
      // position
      container_mc._x = _global.xpos;
      container_mc._y = _global.ypos;
      // parse array
      imageArray.reverse();
      imageGen(imageArray);
      } else {
      trace('problem');
      }
      }
      // depth swapping
      function swapPlace(clip,num) {
      eval(clip).swapDepths(eval("container_mc.loader"+num+"_mc"));
      }

      function loadImages(data,num) {
      if (i==undefined || i == 2) {
      i=2;
      createLoader(i,data,num);
      i=1;
      } else if (i==1) {
      createLoader(i,data,num);
      i=2;
      }
      }

      function createLoader(i,data,num) {
      thisLoader=eval("container_mc.loader"+i+"_mc");
      thisLoader._alpha=0;
      thisLoader.loadMovie(data
      .path);
      watcher_mc.onEnterFrame=function () {
      var picLoaded = thisLoader.getBytesLoaded();
      var picBytes = thisLoader.getBytesTotal();
      if (isNaN(picBytes) || picBytes < 4) {
      return;
      }
      if (picLoaded / picBytes >= 1) {
      swapPlace("container_mc.loader2_mc",1);
      alphaTween = new mx.transitions.Tween(thisLoader, "_alpha",
      mx.transitions.easing.Regular.easeOut,0,100,_global.fadetime,true);
      timerInterval = setInterval(imageGen,_global.numPause,data);
      delete this.onEnterFrame;
      }
      }
      }

      function imageGen(data) {
      // start at 0, increment to total number of images, then drop back to zero
      when done
      if (p==undefined) { p=0;} else { break; }
      if (p==data.length && _global.looping=="yes") {/*p=0;*/ loadXMLagain();}
      else { break; }
      loadImages(data,p);
      p++;
      clearInterval(timerInterval);
      }
      stop();


      //And here is an XML file:
      <gallery timer="5" order="sequential" fadetime="2" looping="yes" xpos="0"
      ypos="0">
      <image path="C:\TVSlideshow\images\apple1.jpg" />
      <image path="C:\TVSlideshow\images\apple2.jpg" />
      <image path="C:\TVSlideshow\images\apple3.jpg" />
      </gallery>

      P.S.
      It must work without restarting swf file.

      Thanks in advance,
      Bare