0 Replies Latest reply on May 31, 2007 3:13 AM by andybuk

    Adding to a XML Flash SlideShow - POS

    andybuk Level 1
      i have a fade in & out slide show - works well. The slide show gets
      the content var from an XML file e.g. _x _y pos of the images, fade
      times and time between images etc...

      However ontop of the images fading in & out i need to:

      - add a single word for each image
      (so the word has got to fade in and out with that specific image too)

      - need to be able to change the colour of the word
      (depending if its on a dark background or light background)

      - and need to be able to change the position of the word on the image
      (so the word is not over a part of the image that would make it hard to read)

      all of this needs to be done in the XML file ! so the flash movie or images
      never need to be touched again.

      IS THIS POSSIBLE ??? any help pointers, tutorials etc... would be great
      as my XML knowledge isn't good, nor my actionscript !

      ----------------------------------------------------------------------

      THE CURRENT XML FILE READS LIKE THIS :

      ----------------------------------------------------------------------
      <!--
      "timer" -- Number of seconds between each image transition.
      "order" -- How you want your images displayed. choose either 'sequential' or 'random'.
      "looping" -- If the slide show is in sequential mode, this stops the show at the last image (use 'yes' for looping, 'no' for not).
      "fadetime" -- Velocity of image crossfade. Increment for faster fades, decrement for slower. Approximately equal to seconds.
      "xpos" -- _x position of all loaded clips (0 is default).
      "ypos" -- _y position of all loaded clips (0 is default).
      -->

      <gallery timer="5" order="sequential" fadetime="2" looping="yes" xpos="0" ypos="0" >
      <image path="images/slideshow_1.jpg" /> <!-- slideshow image 1 -->
      <image path="images/slideshow_2.jpg" /> <!-- slideshow image 2 -->
      <image path="images/slideshow_3.jpg" /> <!-- slideshow image 3 -->
      <image path="images/slideshow_4.jpg" /> <!-- slideshow image 4 -->
      <image path="images/slideshow_5.jpg" /> <!-- slideshow image 5 --> <!-- to add more images duplicate this line of code and paste below -->
      </gallery>

      ----------------------------------------------------------------------

      THE CURRENT ACTIONSCRIPT IN THE FIRST FRAM OF THE TIMELINE IS:
      (actionscript in the first frame of the timeline)

      ----------------------------------------------------------------------

      fscommand("allowscale", "false");
      // set random # variables - each must be 0 for first 'while' loop below
      var randomNum = 0;
      var randomNumLast = 0;

      // 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("slideshow.xml");

      function parse(success) {
      if (success) {
      imageArray = new Array();
      var root = this.firstChild;
      _global.numPause = Number(this.firstChild.attributes.timer * 1000);
      _global.order = this.firstChild.attributes.order;
      _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);
      _global.strapline = (this.firstChild.attributes.strapline);
      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++;
      }
      // place parent container
      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"+n um+"_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,_globa l.fadetime,true);
      timerInterval = setInterval(imageGen,_global.numPause,data);
      delete this.onEnterFrame;
      }
      }
      }
      function imageGen(data) {
      // random, or sequential?
      if (_global.order=="random") {
      // choose random # between 0 and total number of images
      while (randomNum == randomNumLast) {
      randomNum = Math.floor(Math.random() * data.length);
      trace(randomNum);
      }
      loadImages(data,randomNum);
      randomNumLast = randomNum;
      } else if (_global.order=="sequential") {
      // start at 0, increment to total number of images, then drop back to zero when done
      if (p==undefined || p==data.length && _global.looping=="yes") { p=0; } else { break; }
      loadImages(data,p);
      p++;
      } else {
      trace ("order attribute in xml isn't correct - must specify either 'random' or 'sequential'");
      }
      clearInterval(timerInterval);
      }
      stop();

      ----------------------------------------------------------------------
      Thanks !!! Thanks !!! Thanks !!! Thanks !!! Thanks !!!Thanks !!!
      Thanks !!! Thanks !!! Thanks !!! Thanks !!! Thanks !!! Thanks !!! Text THE CURRENT XML FILE READS LIKE THIS :