1 Reply Latest reply on Jun 27, 2006 1:51 AM by Peter Lorent

    SlideShow AS issue??

    blueowl
      OK I have this flash based slideshow that generally did what I wanted but I then I needed to tweak it to add some nav elements and a Button to launch a URL (see second AS code) - OK at first the AS works Slideshow wise - if I use the folowing:


      delay = 3000;
      //-----------------------
      function loadXML(loaded) {

      if (loaded) {

      xmlNode = this.firstChild;
      image = [];
      description = [];
      total = xmlNode.childNodes.length;
      for (i=0; i<total; i++) {

      image = xmlNode.childNodes.childNodes[0].firstChild.nodeValue;
      description = xmlNode.childNodes.childNodes[1].firstChild.nodeValue;

      }
      firstImage();

      } else {

      content = "file not loaded!";

      }

      }
      xmlData = new XML();
      xmlData.ignoreWhite = true;
      xmlData.onLoad = loadXML;
      xmlData.load("images.xml");

      p = 0;
      this.onEnterFrame = function() {

      filesize = picture.getBytesTotal();
      loaded = picture.getBytesLoaded();
      preloader._visible = true;
      if (loaded != filesize) {

      preloader.preload_bar._xscale = 100*loaded/filesize;

      } else {

      preloader._visible = false;
      if (picture._alpha<100) {

      picture._alpha += 10;

      }

      }

      };
      function nextImage() {

      if (p<(total-1)) {

      p++;
      if (loaded == filesize) {

      picture._alpha = 0;
      picture.loadMovie(image[p], 1);
      desc_txt.text = description[p];
      picture_num();
      slideshow();

      }

      }

      }
      function prevImage() {

      if (p>0) {

      p--;
      picture._alpha = 0;
      picture.loadMovie(image[p], 1);
      desc_txt.text = description[p];
      picture_num();

      }

      }
      function firstImage() {

      if (loaded == filesize) {

      picture._alpha = 0;
      picture.loadMovie(image[0], 1);
      desc_txt.text = description[0];
      picture_num();
      slideshow();

      }

      }
      function picture_num() {

      current_pos = p+1;
      pos_txt.text = current_pos+" / "+total;

      }
      function slideshow() {

      myInterval = setInterval(pause_slideshow, delay);
      function pause_slideshow() {

      clearInterval(myInterval);
      if (p == (total-1)) {

      p = 0;
      firstImage();

      } else {

      nextImage();

      }

      }

      }

      But then when I put other code into the AS with help from another developer - my slideshow stops functioning (Automatically, the slide show has to be manually navigated to get to the next slide instead of it after a delay going to the next slide - the code I have that does that is:

      //-----------------------
      function loadXML(loaded) {
      if (loaded) {
      xmlNode = this.firstChild;
      image = [];
      header = [];
      caption = [];
      url = [];
      delay = [];
      slideNumber = [];
      slideTotal = [];
      total = xmlNode.childNodes.length;
      for (i=0; i<total; i++) {
      image = xmlNode.childNodes.childNodes[0].firstChild.nodeValue;
      header = xmlNode.childNodes.childNodes[1].firstChild.nodeValue;
      caption = xmlNode.childNodes.childNodes[2].firstChild.nodeValue;
      url = xmlNode.childNodes.childNodes[3].firstChild.nodeValue;
      delay = xmlNode.childNodes.childNodes[4].firstChild.nodeValue;
      slideNumber = xmlNode.childNodes.childNodes[5].firstChild.nodeValue;
      slideTotal = xmlNode.childNodes.childNodes.length;
      }




      trace(slideTotal);

      firstImage();
      } else {
      content = "file not loaded!";
      }
      }
      my_Date = new Date();
      xmlData = new XML();
      xmlData.ignoreWhite = true;
      xmlData.onLoad = loadXML;
      xmlData.load("images.xml");


      /////////////////////////////////////
      listen = new Object();
      Key.addListener(listen);
      previous_btn.onRelease = function() {
      clearInterval(myInterval);
      prevImage();
      };
      next_btn.onRelease = function() {
      clearInterval(myInterval);
      nextImage();

      };

      play_btn._visible = 0;
      p = 0;
      pause_btn.onRelease = function() {
      clearInterval(myInterval);
      pause_btn._visible = 0;
      play_btn._visible = 100;
      };
      play_btn.onRelease = function() {
      myInterval = setInterval(pause_slideshow, delay[p]);
      pause_btn._visible = 100;
      play_btn._visible = 0;
      };

      /////////////////////////////////////
      p = 0;
      this.onEnterFrame = function() {
      filesize = picture.getBytesTotal();
      loaded = picture.getBytesLoaded();

      if (loaded != filesize) {
      preloader.preload_bar._xscale = 100*loaded/filesize;
      } else {
      preloader._visible = false;
      if (picture._alpha<100) {
      picture._alpha += 5;
      }
      }
      };

      function nextImage() {
      pause_btn._visible = 100;
      play_btn._visible = 0;
      previous_btn._visible = 100;
      next_btn._visible = 100;
      if (p<(total-1)) {
      p++;
      if (loaded == filesize) {
      picture._alpha = 0;
      picture.loadMovie(image[p], 1);
      head_txt.text = header[p];
      capt_txt.text = caption[p];
      num_txt.text = slideNumber[p];
      url_btn = url[p];
      go_btn = url[p];
      picture_num();
      slideshow();
      }
      }else{
      p = 0;
      if (loaded == filesize) {
      picture._alpha = 0;
      picture.loadMovie(image[p], 1);
      head_txt.text = header[p];
      capt_txt.text = caption[p];
      num_txt.text = number[p];
      url_btn = url[p];
      go_btn = url[p];
      picture_num();
      slideshow();
      }
      }
      }

      function prevImage() {
      pause_btn._visible = 100;
      play_btn._visible = 0;
      if (p>0) {
      p--;
      picture._alpha = 0;
      picture.loadMovie(image[p], 1);
      head_txt.text = header[p];
      capt_txt.text = caption[p];
      num_txt.text = slideNumber[p];
      url_btn = url[p];
      go_btn = url[p];
      picture_num();
      }else{
      p = total - 1;
      picture._alpha = 0;
      picture.loadMovie(image[p], 1);
      head_txt.text = header[p];
      capt_txt.text = caption[p];
      picture_num();
      }
      }


      function firstImage() {
      previous_btn._visible = 0;
      next_btn._visible = 100;
      if (loaded == filesize) {
      picture._alpha = 0;
      picture.loadMovie(image[0], 1);
      head_txt.text = header[0];
      capt_txt.text = caption[0];
      url_btn = url[0];
      go_btn = url[0];
      picture_num();
      slideshow();


      }
      }
      function picture_num() {
      current_pos = slideNumber[p];
      pos_txt.text = current_pos +"/" +slideTotal;
      }



      function slideshow() {
      myInterval = setInterval(pause_slideshow, delay[p]);
      }

      function pause_slideshow() {
      clearInterval(myInterval);
      if (p == (total-1)) {
      p = 0;
      firstImage();
      } else {
      nextImage();
      }
      }

      *** this is the AS for the button that lanches the URL:

      on (release) {

      getURL(url_btn, "_self");
      }

      In any case can anyone help me figure out what I messed up so I can get this running again?

      if you go to : http://www.ruf.rice.edu/~jestrada/CSS/slideshow.zip you can download all o fthe files needed to view the page with the flash including the XML and photos...
        • 1. Re: SlideShow AS issue??
          Peter Lorent Level 2
          In the following function p is undefined because you didn't provide p as a parameter to the function. As a result delay[p] is undefined.
          function slideshow() {
          myInterval = setInterval(pause_slideshow, delay[p]);
          trace(delay[p]);//will return undefined
          }

          If you hardcode the delay, the slideshow autoplays
          function slideshow() {
          myInterval = setInterval(pause_slideshow, 3000);
          }