3 Replies Latest reply on May 16, 2007 9:34 AM by NickTheNameless

    Photos loaded from XML

    NickTheNameless Level 1
      i found a great tutorial on how to create a photo gallery that loads the content from an xml file. right now, the code cycles through the pictures, and when it reaches the end it stops. also, when you first launch the gallery (at the beginning/first picture), the previous button does nothing. i would like to alter this to create a loop, where there is no end. when you reach the end of the array, the "next" button starts back at the beginning, and when you're at the first picture in the gallery, the "previous" button goes to the last picture. here's the code....

      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");
      /////////////////////////////////////
      listen = new Object();
      listen.onKeyDown = function() {
      if (Key.getCode() == Key.LEFT) {
      prevImage();
      } else if (Key.getCode() == Key.RIGHT) {
      nextImage();
      }
      };
      Key.addListener(listen);
      previous_btn.onRelease = function() {
      prevImage();
      };
      next_btn.onRelease = function() {
      nextImage();
      };
      /////////////////////////////////////
      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();
      }
      }
      }
      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();
      }
      }
      function picture_num() {
      current_pos = p+1;
      pos_txt.text = current_pos+" / "+total;
      }

      any help, ideas, suggestions, comments, or simple hello's are much appreciated. thanks in advance! laters..........
        • 1. Photos loaded from XML
          BarryGee Level 1
          It would be great to have a look at your fla file to see how you have set this up. There are so many possibilities for it.
          • 2. Re: Photos loaded from XML
            kglad Adobe Community Professional & MVP
            use the attach code option to display your code. otherwise, your code may be displayed incorrectly (and your is) and is always difficult to read.

            try:

            • 3. Re: Photos loaded from XML
              NickTheNameless Level 1
              sorry for not using the attach code feature. you think as often as i use this site, i would have noticed that little button before today. i have a new motto, "you learn something new everday..... if you visit the adobe forums". ha ha.

              anyweezer, so i found a solution to my problem that creates a new question. i need to create an empty movie clip, for each picture, each with a unique instance name. i'm thinking that the createEmptyMovieClip would go in the for loop near the beginning of the script. let me try this attach code thing now....