Comunidad de diseño web y desarrollo en internet online

Cargar link en Flash a través de XML

Citar            
MensajeEscrito el 25 Ene 2008 02:53 pm
Hola compañeros de fatigas. Aterrizo por primera vez a este foro porque estoy atrancado con un proyecto que pretendo llevar adelante. Os cuento:

Bajé una galería de imágenes que me parece magnífica. Dicha galería funciona cargando datos e imágenes a través de un xml. Cubriría todas mis necesidades si no fuera porque todos los datos que carga a ventanas de texto dinámicas no permiten incluir ningún enlace. Y es que lo que necesito es incluir un link a cada resultado, que pueden ser muchísimos. Mi pregunta es, ¿puedo modificar el código ActionScript que os adjunto para que el .swf lea datos del xml con enlace; por ejemplo cambiando en el XML <title>solo texto</title> por <title><a href = "http://www.google.es"/a>texto con enlace</title>.

Osea, en el ActionScript, donde dice:

Código :

function parseXml() {
   //DEBUG
   //trace(gallery.dump());
   
   myGallery = new Array();
   
   // gallery title
   galleryTitle = gallery.attributes.title;
   title_txt.text = galleryTitle;
   
   // thumbanil directory
   thumbDir = gallery.attributes.thumbDir;
   // image directory
   imageDir = gallery.attributes.imageDir;
   // random ? true : false
   viewRandom = gallery.attributes.random;
   if(viewRandom == "true") {
      viewRand = true;
   } else {
      viewRand = false;
   }
   // parse information
   catTotal = gallery.category.length;

   for(var i=0; i<catTotal; i++) { //looping through categories
      myGallery[i] = new Array();
      myGallery[i]["name"] = gallery.category[i].attributes.name;
      myGallery[i]["image"] = new Array();
      //trace(myGallery[i]["name"]);
      var imageCount = gallery.category[i].image.length;
      for(var k=0; k<imageCount; k++) { //looping through images
         myGallery[i]["image"][k] = new Array();
         myGallery[i]["image"][k]["date"] = gallery.category[i].image[k].date.getValue();
         myGallery[i]["image"][k]["title"] = gallery.category[i].image[k].title.getValue();
         myGallery[i]["image"][k]["desc"] = gallery.category[i].image[k].desc.getValue();
         myGallery[i]["image"][k]["thumb"] = gallery.category[i].image[k].thumb.getValue();
         myGallery[i]["image"][k]["img"] = gallery.category[i].image[k].img.getValue();
         //trace(myGallery[i]["image"][k]["date"]);
      }
   }


¿Cómo puedo hacer para cambiar la línea, por ejemplo myGallery[i]["image"][k]["title"] = gallery.category[i].image[k].title.getValue(); para que luego en el XML pueda incluir links?

He intentado cambiando sólo en el XML cambiando los <> del <a href...> por "&lt;" y "&gt;" o con <![CDATA[<a href="http://www.google.es">]]> (en este caso, sí edita el texto del enlace, pero no se muestra activo) y no he encontrado la solución.

No soy programador, así que agradezco cualquier consejo. Facilitaré el .fla por privado si me lo pedís. Los archivos (swf, xml, as) podéis bajarlos de aquí

Aquí va el Action Script incluido en el archivo fla de la Galería. Es largo que se las trae.

Código :

/*
Image Gallery V1.0
Created April 2, 2006
Created by Tony Yoo
Email: [email protected]
Website: tonyyoo.com
* Please keep this information intact
* Please feel free to modify the script and the look of the gallery to meet your needs.
* And make sure you let me know where this gallery gets used.
* My scripts aren't so organized at this point so you may find it difficult to make customization. 
If you have any questions regarding this gallery please contact me using the eamil address above.
*/

stop();


// include assets
#include "mc_tween2.as"
#include "xmlsa.as"
#include "timer.as"


// two views ? catView : thumbView
var viewMode = "catView"; // when page is first viewed show all the categories.
var viewRand = true; // on/off random preview
var catCol = 4; // number of columns for category
var numCatDisplay = 12; // max number of categories to show per page
var numThumbDisplay = 12; // max number of thumbnails to show per page
var catColXgap = 8; // gap between categories
var catColYgap = 180;
var dropDown = false;

var curImage = 0;
var curCat = 0;

// slideshow switch
var autoSlide = true;
// default transition speed
var defTranSpeed = 300;

catView_btn._alpha = 0;

// load the xml data
gallery = new XMLSA();
gallery.load("gallery.xml");
gallery.onLoad = function(ok){
   if (ok) {
      parseXml();
   } else {
      // error branch
      trace("error");
   }
}


/* loading stylesheet // not being used for image gallery but can be added later
function loadCss() {
   styles = new TextField.StyleSheet();
   css = "styles.css";
   styles.load(css);
   styles.onLoad = function(loaded) {
      if (loaded) {
         cssLoaded = true;
      } else {
         cssLoaded = false;
      }
      parseXml();
   }
}
*/


function parseXml() {
   //DEBUG
   //trace(gallery.dump());
   
   myGallery = new Array();
   
   // gallery title
   galleryTitle = gallery.attributes.title;
   title_txt.text = galleryTitle;
   
   // thumbanil directory
   thumbDir = gallery.attributes.thumbDir;
   // image directory
   imageDir = gallery.attributes.imageDir;
   // random ? true : false
   viewRandom = gallery.attributes.random;
   if(viewRandom == "true") {
      viewRand = true;
   } else {
      viewRand = false;
   }
   // parse information
   catTotal = gallery.category.length;

   for(var i=0; i<catTotal; i++) { //looping through categories
      myGallery[i] = new Array();
      myGallery[i]["name"] = gallery.category[i].attributes.name;
      myGallery[i]["image"] = new Array();
      //trace(myGallery[i]["name"]);
      var imageCount = gallery.category[i].image.length;
      for(var k=0; k<imageCount; k++) { //looping through images
         myGallery[i]["image"][k] = new Array();
         myGallery[i]["image"][k]["date"] = gallery.category[i].image[k].date.getValue();
         myGallery[i]["image"][k]["title"] = gallery.category[i].image[k].title.getValue();
         myGallery[i]["image"][k]["desc"] = gallery.category[i].image[k].desc.getValue();
         myGallery[i]["image"][k]["thumb"] = gallery.category[i].image[k].thumb.getValue();
         myGallery[i]["image"][k]["img"] = gallery.category[i].image[k].img.getValue();
         //trace(myGallery[i]["image"][k]["date"]);
      }
   }
   
   
   // determine the number of pages needed
   if(catTotal > numCatDisplay) {
      catNumPages = Math.ceil(catTotal/numCatDisplay);
   } else {
      // if categories are less than the limit only one page is needed
      catNumPages = 1;
   }

   // start from first page
   catPageCounter = 1;
   
   // start from 0;
   var pos = 0;
   
   // output page status
   page_txt.text = catPageCounter+" of "+catNumPages;
   
   prevBtn(catPageCounter);
   nextBtn(catPageCounter, catNumPages);
   
   //disable catViewBtn
   catView_btn.enabled = false;
   
   loadCat(pos);
   loadDropDown();

   catView_btn.onRelease = function() {
      catPageCounter = 1;
      
      _root.viewMode = "catView";
      
      loadCat(0);
      catView_btn.enabled = false;
      catView_btn.alphaTo(0, 1);
      dropDownBtn_mc.catName_txt.text = "Choose a category";
      if(dropDown) {
         doDropDown();
      }
      // output page status
      page_txt.text = catPageCounter+" of "+catNumPages;
      prevBtn(catPageCounter);
      nextBtn(catPageCounter, catNumPages);
   }   
}



function enableCatViewBtn() {
   catView_btn.enabled = true;
   catView_btn.alphaTo(100, 1);
}




function loadDropDown() {
   
   // if less than 7 categories, shorten the dropdown bg
   if(catTotal < 8) {
      // height of each category buttons
      var catBtnHeight = 20+3; // include the gaps
      var bgHeight = catTotal * catBtnHeight;
      bgHeight += 20; //include the top padding
      dropDown_mc.bg_mc.tween("_height", bgHeight, 1);
   }
   
   
   var temp = dropDown_mc.createEmptyMovieClip("temp", _root.getNextHighestDepth());
   
   var i=0;
   
   temp.onEnterFrame = function(){
      if(catTotal>i){
         
         //trace(i);
         var DropDownBtn = dropDown_mc.catBtn_mc.attachMovie("dropDownBtn", "dropDownBtn_mc"+i, i);
         
         DropDownBtn._alpha = 0;
         DropDownBtn.alphaTo(100, 3);
         
         DropDownBtn._y = Math.round(Number(DropDownBtn._height+3) * i);

         DropDownBtn.catName_txt.text = myGallery[i]["name"];
      
         DropDownBtn.onRollOver = function() {
            this.bg_mc.colorTo(0x10bddc, 0.2);
            this.catName_txt.colorTo(0xddfaff, 0.2);
         }
         
         DropDownBtn.onRollOut = function() {
            this.bg_mc.colorTo(0xebeeef, 3);
            this.catName_txt.colorTo(0x333333, 0.2);
         }
         
         var totalImg = myGallery[i]["image"].length;
         
         // when user clicks on one the categories, show thumbanils of that category
         DropDownBtn.total = total;
         DropDownBtn.chosenCat = i;
         DropDownBtn.onRelease = function() {
            dropDownBtn_mc.catName_txt.text = myGallery[this.chosenCat]["name"];
            activateCat(this, this.chosenCat);
            viewMode = "thumbView"; // change mode to thumb view
            showTnView(this.chosenCat, totalImg);
            
            enableCatViewBtn();
         }
         
         i++
      } else {
         delete this.onEnterFrame;
         this.removeMovieClip();
      }
   }
}






   // function determining whether to enable page buttons or not // if more than one page is needed enable the buttons

function prevBtn(counter) {
   trace(counter);
   if(counter > 1) {
      prev_btn.enabled = true;
      prev_btn.gotoAndStop(2);
      
   } else if(counter == 1) {
      prev_btn.btn_mc.icon_mc.colorTo(0x333333, 0.5);
      prev_btn.btn_mc.bg_mc.colorTo(0xffffff, 0.5);
      prev_btn.enabled = false;
      prev_btn.gotoAndStop(1);
      
      
   }

}

function nextBtn(counter, pages) {

   
   if(counter < pages) {
      next_btn.enabled = true;
      next_btn.gotoAndStop(2);
      
   } else if(counter == pages) {
      next_btn.btn_mc.icon_mc.colorTo(0x333333, 0.5);
      next_btn.btn_mc.bg_mc.colorTo(0xffffff, 0.5);
      next_btn.enabled = false;
      next_btn.gotoAndStop(1);
   }
   
}



prev_btn.onRelease = function() {
   // hide the dropdown if it's open
   if(dropDown) {
      doDropDown();
   }
   
   if(viewMode == "catView") {
      if(catPageCounter > 1) {
         catPageCounter--;
      }
      
      prevBtn(catPageCounter);
      nextBtn(catPageCounter, catNumPages);
      //trace(catPageCounter);
      
      // recaculate the start position
      var pos = (catPageCounter*numCatDisplay)-numCatDisplay;
      //trace(pos);
      // output page status
      page_txt.text = catPageCounter+" of "+catNumPages;
      
      loadCat(pos);
   } else if(viewMode == "thumbView") {
      // hide the dropdown if it's open
      if(dropDown) {
         doDropDown();
      }
      
      
         if(thumbPageCounter > 1) {
            thumbPageCounter--;
         }
         //trace(thumbPageCounter);
         
         // recaculate the start position
         var pos = (thumbPageCounter*numThumbDisplay)-numThumbDisplay;
         
         // output page status
         page_txt.text = thumbPageCounter+" of "+thumbNumPages;
         
         // enable/disable page buttons
         prevBtn(thumbPageCounter);
         nextBtn(thumbPageCounter, thumbNumPages);
         
         remove();
         showThumbs(curCat, pos);
   }
   
}
prev_btn.onRollOver = function() {
   this.btnRollOver();
}
prev_btn.onRollOut = function() {
   this.btnRollOut();
}




next_btn.onRelease = function() {
   

   
   // hide the dropdown if it's open
   if(dropDown) {
      doDropDown();
   }
   
   
   
   if(viewMode == "catView") {
      
      trace('12313');
      
      if(catPageCounter < catNumPages) {
         catPageCounter++;
      }
      //trace(catPageCounter);
      prevBtn(catPageCounter);
      nextBtn(catPageCounter, catNumPages);
      // recaculate the start position
      var pos = (catPageCounter*numCatDisplay)-numCatDisplay;
      //trace(pos);
      // output page status
      page_txt.text = catPageCounter+" of "+catNumPages;
      loadCat(pos);
   } else if(viewMode == "thumbView") {
      trace('aaa');
      
      // hide the dropdown if it's open
      if(dropDown) {
         doDropDown();
      }
      
      
         
         if(thumbPageCounter < thumbNumPages) {
            thumbPageCounter++;
         }
         
         // recaculate the start position
         var pos = (thumbPageCounter*numThumbDisplay)-numThumbDisplay;
         
         // output page status
         page_txt.text = thumbPageCounter+" of "+thumbNumPages;
         
         // enable/disable page buttons
         prevBtn(thumbPageCounter);
         nextBtn(thumbPageCounter, thumbNumPages);
         
         remove();
         showThumbs(curCat, pos);
   }

}
next_btn.onRollOver = function() {
   this.btnRollOver();
}
next_btn.onRollOut = function() {
   this.btnRollOut();
}






// function to initialize the category buttons
function loadCat(pos) {
      
   catWrap_mc.removeMovieClip();
   imgWrap_mc.removeMovieClip();
   
   var catWrap = _root.createEmptyMovieClip("catWrap_mc", _root.getNextHighestDepth());
   var imgWrap = _root.createEmptyMovieClip("imgWrap_mc", _root.getNextHighestDepth());
   catWrap._x = 61;
   catWrap._y = 120;
   imgWrap._x = 58;
   imgWrap._y = 120;
   
   dropDown_mc.swapDepths(_root.getNextHighestDepth());
   dropDownBtn_mc.swapDepths(_root.getNextHighestDepth());
   
   
   //get the total number of rows
   var numRows = catTotal/catCol;
   
   var xnum = catCol;
   var ynum = numRows;
   
   var xgap = catColXgap;
   var ygap = catColYgap;
   var ox = 0
   var oy = 0
   var total = xnum*ynum
   
   var i=pos;
   var j=0; // used to reset the position
   
   var taco = i+numCatDisplay;
   //trace(pos);
   
   var temp = _root.createEmptyMovieClip("temp", _root.getNextHighestDepth());
   temp.onEnterFrame = function(){
      if(i<taco && i<catTotal){
         
         //trace(i);
         var myCat = catWrap.attachMovie("cat", "cat_mc"+i, i);
         var myImg = imgWrap.attachMovie("thumb", "thumb_mc"+i, i);
         
         // mc covering thumbnails to hide dynamic text
         myImg.tnHider_mc.alphaTo(0, 3);
         
         myCat._alpha = 0;
         myImg._alpha = 0;
         myCat.alphaTo(100, 3);
         myImg.alphaTo(100, 3);
         
         myCat._x = Math.round(ox + (j%xnum)*(xgap + myCat._width));
         myCat._y = Math.round(oy + int(j/xnum)*ygap);
         
         myImg._x = Math.round(ox + (j%xnum)*(xgap + myImg._width-4)); // subtract 9 : because of drop shadow it adds to the width of box
         myImg._y = Math.round(oy + myCat._y + 25);
         
         var totalImg = myGallery[i]["image"].length;
      
         if(viewRand) {
            //get a random number between total number of images from each categories
            var RandImgNum = random(myGallery[i]["image"].length);
            var CurImage = RandImgNum;
            var ImgDate = myGallery[i]["image"][RandImgNum]["date"];
            var ImgTitle = myGallery[i]["image"][RandImgNum]["title"];
            var ImgDesc = myGallery[i]["image"][RandImgNum]["desc"];
            var ImgThumb = myGallery[i]["image"][RandImgNum]["thumb"];
            var ImgFull = myGallery[i]["image"][RandImgNum]["img"];
            
         } else {
            var CurImage = 0;
            // 0 == most recently added image <- controlled by php
            var ImgDate = myGallery[i]["image"][0]["date"];
            var ImgTitle = myGallery[i]["image"][0]["title"];
            var ImgDesc = myGallery[i]["image"][0]["desc"];
            var ImgThumb = myGallery[i]["image"][0]["thumb"];
            var ImgFull = myGallery[i]["image"][0]["img"];
         }
         
         //trace(ImgDesc);
         
         myCat.cat_txt.text = myGallery[i]["name"];
         myCat.total_txt.text = totalImg;
         
         myImg.title_txt.text =  ImgTitle;
         myImg.date_txt.text =  ImgDate;
         
         //need to send these to display thumbnails when user clicks the thumbnail from cat view
         myImg.empty_mc.total = total;
         myImg.empty_mc.curCat = i;
         
         myImg.empty_mc.curImage = CurImage;

         myImg.empty_mc.imgDesc = ImgDesc;
         myImg.empty_mc.thumbToLoad = ImgThumb;
         myImg.empty_mc.imgToLoad = ImgFull;
         myImg.empty_mc.loadThumb();
      
      
         myCat.onRollOver = function() {
            this.catBG_mc.colorTo(0x1b4d70, 0.5);
            this.cat_txt.colorTo(0xb5d9f2, 0.5);
         }
         
         myCat.onRollOut = function() {
            this.catBG_mc.colorTo(0x191919, 6);
            this.cat_txt.colorTo(0xa5a5a5, 0.5);
         }
         
         // when user clicks on one the categories, show thumbanils of that category
         myCat.total = total;
         myCat.chosenCat = i;
         myCat.onRelease = function() {
            dropDownBtn_mc.catName_txt.text = myGallery[this.chosenCat]["name"];
            activateCat(this, this.chosenCat);
            viewMode = "thumbView"; // change mode to thumb view
            showTnView(this.chosenCat, totalImg);
            
            enableCatViewBtn();
         }
         
         j++
         i++
      } else {
         delete this.onEnterFrame;
         this.removeMovieClip();
      }
   }
}



function activateCat(item, num) {
   if (currentItem != false) {
      deactivateCat(num);
   }
   
   // hide the dropdown if it's open
   if(dropDown) {
      doDropDown();
   }
   
   currentItem = item;

   currentItem.catBG_mc.colorTo(0x1b4d70, 0.5);
   currentItem.cat_txt.colorTo(0xb5d9f2, 0.5);
   
   currentItem.bg_mc.colorTo(0x10bddc, 0.2);
   currentItem.catName_txt.colorTo(0xddfaff, 0.2);
   
   /*
   dropDown_mc.catBtn_mc["dropDownBtn_mc"+num].bg_mc.colorTo(0x10bddc, 0.2);
   dropDown_mc.catBtn_mc["dropDownBtn_mc"+num].catName_txt.colorTo(0xddfaff, 0.2);
   dropDown_mc.catBtn_mc["dropDownBtn_mc"+num].enabled = false;
   */
   currentItem.enabled = false;
}

function deactivateCat(num) {

   // for catView btns
   currentItem.catBG_mc.colorTo(0x191919, 6);
   currentItem.cat_txt.colorTo(0xa5a5a5, 0.5);
   
   currentItem.bg_mc.colorTo(0xebeeef, 3);
   currentItem.catName_txt.colorTo(0x333333, 0.2);
   // for dropdown buttons
/*
   dropDown_mc.catBtn_mc["dropDownBtn_mc"+num].bg_mc.colorTo(0xebeeef, 3);
   dropDown_mc.catBtn_mc["dropDownBtn_mc"+num].catName_txt.colorTo(0x333333, 0.2);
   dropDown_mc.catBtn_mc["dropDownBtn_mc"+num].enabled = true;
   */
   currentItem.enabled = true;
   currentItem = undefined;
}


MovieClip.prototype.loadThumb = function() {

   var target = this;
   var imgDesc = this.imgDesc;
   var thumbToLoad = this.thumbToLoad;
   var imgToLoad = this.imgToLoad;
   var curImage = this.curImage;
   var curCat = this.curCat;
   var thumbTotal = this.total;
   
   this.loadMovie(thumbDir+thumbToLoad);
   var temp = this._parent.createEmptyMovieClip("temp", this._parent.getNextHighestDepth());
   
   temp.onEnterFrame = function() {
      var loaded = target.getBytesLoaded();
      var total = target.getBytesTotal();
      var perc = Math.round(loaded/total*100);
      
      target._parent.bar_mc._yscale = perc;
      
      //trace(perc);
      if(perc == 100) {
         target._parent.bar_mc.alphaTo(0, 5);
         
         target.curCat = curCat;
         target.curImage = curImage;
         target.imgDesc = imgDesc;
         target.imgToLoad = imgToLoad;
         target.maxWidth = 179;
         target.maxHeight = 55;
         target.thumbTotal = thumbTotal;
         
         target.shrinkImg();
         

         delete this.onEnterFrame;
         temp.removeMovieClip();
      }
   }
}


MovieClip.prototype.shrinkImg = function (){
   
   // init pos and alpha of click_txt
   this._parent.click_txt._alpha = 100;
   //this._parent.click_txt.roundedYSlideTo(15, 0.2);
   
   var orgWidth = this._width;
   var orgHeight = this._height;
   
   var orgX = this._x;
   var orgY = this._y;

   
   // resizeImg object is returned by resizeToFit prototype function and saved as myImage;
   var myImage = this.resizeToFit();
   this.tween(["_width", "_height"], [myImage.newWidth, myImage.newHeight], 1);


   // slide the image to the middle point y
   var yMiddle = -(Number(myImage.newHeight/2)-40);
   //trace(yMiddle);
   //this.ySlideTo(yMiddle, 2);
   
   
   this.onRollOver = function() {
      //this._parent.click_txt.alphaTo(100, 2);
      this._parent.click_txt.roundedYSlideTo(-8, 1);
      // make it dark
      this._parent.rollover_mc.alphaTo(70, 0.5);
      //this.tween(["_width", "_height"], [myImage.newWidth+20, myImage.newHeight+20], 2);
      //this.colorTransformTo(200, 0, 200, 0, 200, 0, 200, 0, 0.3, "linear");
      //this.colorTransformTo(100, 0, 100, 0, 100, 0, 100, 0, 1, "linear", 0.3);
   }
   this.onRollOut = function() {
      //this._parent.click_txt.alphaTo(0, 2);
      this._parent.click_txt.roundedYSlideTo(-24.6, 1);
      this._parent.rollover_mc.alphaTo(0, 3);
      //this.tween(["_width", "_height"], [myImage.newWidth, myImage.newHeight], 2);
   }

   this.onRelease = function()  {
      
      // hide the dropdown if it's open
      if(dropDown) {
         doDropDown();
      }
      
      // reset current image to this image user just clicked on
      _root.curImage = this.curImage;
      // reset the category
      _root.curCat = this.curCat;
      
      this._parent.rollover_mc.alphaTo(90, 0.5);
      //this._parent.viewing_mc.alphaTo(100, 6);

      this._parent.click_txt.roundedYSlideTo(-24.6, 1);
      
      //activateItem(this, myImage.newWidth, myImage.newHeight);
      
      
      // view the image in full scale
      showFullImage(this.imgToLoad, this.imgDesc);
   
   }
}



// TIMER FUNCTION
function loadTimer() {

   var speed = defTranSpeed;
   //var timer = _root.attachMovie("timer", "timer_mc", _root.getNextHighestDepth());

   //timer._x = 474;
   //timer._y = 15;

   myTimer = new Timer();
   myTimer.setDelay(5);
   myTimer.setAlarm(speed);
   var obj = new Object;
   myTimer.addListener(obj);
   
   //reset the timer
   myTimer.reset();
   
   obj.onTimerStart = function(t){
      //trace("Starting countdown::\n" + myTimer.getAlarm());
   }
   obj.onTimerTick = function(t){
      
      //trace(myTimer.getAlarm() - t);
      var curTime = myTimer.getAlarm() - t;
      //trace(curTime);
      
      var curScale = -Math.round((((curTime * 100)/speed) - 100));
      timer_mc.bar_mc._xscale = curScale;
      timer_mc.bar_mc._alpha = 50;
      /*
      // caculate degrees relative to seconds
      // caculate 0 to 360

      var curDegree = - Math.round((((curTime * 360)/speed) - 360));
      //reset rotation
      timer.lhalf_mc._rotation = 0;
      if(curDegree < 180) {
         timer.fhalf_mc._rotation = curDegree + 180;
      }
      if(curDegree >= 180) {
         timer.lhalf_mc._rotation = curDegree + 180;
      }
      */
   }
   obj.onTimerAlarm = function(){

      //trace("Time is up!");
      
      //total of images in chosen category
      var totalImages = myGallery[curCat]["image"].length;
      
      // update the counter and load the news using counter
      if(curImage == totalImages) { // after last one go back to first image
         curImage = 0;
      }

      if(curImage < totalImages-1) {
         showNextImage();
      } else {
         curImage = -1;
         showNextImage();
      }
      //trace(curImage);
      
      // reset the timer so it loops
      myTimer.reset();
   }
   
   myTimer.start();
   
   slideshow_mc.onRelease = function() {
      timerToggle();
   }
}



function showFullImage(imgToLoad, desc) { //<--------------------------------------------------------- SHOW FULL IMAGE // START FROM HERE...

   // reset the conditions
   transBG_mc._x = 34;
   transBG_mc._y = 34;
   transBG_mc._visible = true;
   transBG_mc.alphaTo(100, 1);
   transBG_mc.mask_mc._alpha = 0;

   transBG_mc.swapDepths(_root.getNextHighestDepth());
   transBG_mc.fake_btn.enabled = false;

   transBG_mc.mask_mc.alphaTo(100, 0.7, undefined, 0, 
      function() {
         //load preloader
         var myPreloader = transBG_mc.attachMovie("imagePreloader", "preloader_mc", this.getNextHighestDepth());
         myPreloader._alpha = 0;
         myPreloader.alphaTo(100, 1);
         myPreloader._x = transBG_mc._width/2;
         myPreloader._y = transBG_mc._height/2-20;
         loadFull(imgToLoad, desc);
      }
   );
   
   /*
   transBG_mc.exit_mc.onRelease = function() {
      transBG_mc.slideTo(34, -900, 0.1);
   }
   */
}

function loadFull(imgToLoad, desc) {

   var holder = transBG_mc.picBG_mc.empty_mc;
   
   holder._alpha = 0;
   holder.loadMovie(imageDir+imgToLoad);
   
   var temp = holder._parent.createEmptyMovieClip("temp", holder._parent.getNextHighestDepth());
   
   temp.onEnterFrame = function() {
      var loaded = holder.getBytesLoaded();
      var total = holder.getBytesTotal();
      var perc = Math.round((loaded/total)*100);
      
      //trace(perc);
      
      if(perc == 100) {
         // hide the preloader
         transBG_mc.preloader_mc.alphaTo(0, 1, "linear", 0, function() { transBG_mc.prealoder_mc.removeMovieClip(); });
         //trace(holder._width);
         checkImageWidth(holder, desc);
         
         delete this.onEnterFrame;
         temp.removeMovieClip();
      }
   }
}

function checkImageWidth(holder, desc) {
   var temp = holder._parent.createEmptyMovieClip("temp", holder._parent.getNextHighestDepth());
   temp.onEnterFrame = function() {
      if(holder._width > 0) {
         //trace(holder._width);
         displayFullImage(holder, desc);
         // start the timer
         if(autoSlide) {
            loadTimer();
         }
         delete this.onEnterFrame;
         temp.removeMovieClip();
      }
   }
}


function timerToggle() {
   if(autoSlide) {
      slideshow_mc.gotoAndStop(2);
      myTimer.pause();
      autoSlide = false;
   } else {
      slideshow_mc.gotoAndStop(3);
      myTimer.resume();
      autoSlide = true;
   }
}



function displayFullImage(imageHolder, desc) {
   

   var imageBorder = 20;
   var mcW = imageHolder._width;
   var mcH = imageHolder._height;
   
   
   //total of images in chosen category
   var totalImages = myGallery[curCat]["image"].length;
   curImage_txt.text = Number(_root.curImage+1)+" of "+totalImages;

   enableImageNav(true);

   //trace(mcW);
   
   if(mcW > 710) {
      imageHolder.maxWidth = 710;
      var newSize = imageHolder.resizeToFit();
      imageHolder.tween(["_width", "_height"], [newSize.newWidth, newSize.newHeight], 0.5, undefined);
      var mcW = newSize.newWidth;
      var mcH = newSize.newHeight;
   }
   
   var xCenter = (transBG_mc.fake_btn._width/2) - (Number(mcW+imageBorder)/2);
   var yCenter = (transBG_mc.fake_btn._height/2) - (Number(mcH+imageBorder)/2);
   
   // center the image
   transBG_mc.picBG_mc.slideTo(xCenter, yCenter, 0.5);
   // resize the background
   transBG_mc.picBG_mc.bg_mc.tween(["_width", "_height"], [mcW+imageBorder, mcH+imageBorder], 0.5, undefined, 0, function() {  });
   transBG_mc.picBG_mc.bg_mc.alphaTo(100, 0.5, "linear", 0, function() { imageHolder.alphaTo(100, 2); });

   
   var descMC = _root.transBG_mc.desc_mc;
   
   // put description
   descMC.desc_txt.text = desc;
   
   
   // resize textfield
   var padding = 30;
   var myFormat_fmt = new TextFormat();
   var textDimension = myFormat_fmt.getTextExtent(desc, 200);
   var tWidth = textDimension.textFieldWidth;
   var tHeight = textDimension.textFieldHeight+20; // used 20 to prevent it from text get cut off at the end //////////////////////////
   
   descMC.desc_txt._width = tWidth;
   descMC.desc_txt._height = tHeight;
   // reposition textfield
   descMC.desc_txt._x = padding/2;
   descMC.desc_txt._y = padding/2;
   descMC.descBG_mc._width = tWidth+padding;
   descMC.descBG_mc._height = tHeight+padding;
   descMC._alpha = 0;
   
   imageHolder.onRollOver = function() {
      descMC.alphaTo(100, 1);
   }
   imageHolder.onRollOut = function() {
      descMC.alphaTo(0, 1);
   }
   
   // center image description mc
   var xDescCenter = ((transBG_mc.fake_btn._width+imageBorder)/2) - ((descMC._width+imageBorder)/2);
   var yDescCenter = ((transBG_mc.fake_btn._height+imageBorder)/2) - ((descMC._height+imageBorder)/2);
   
   descMC.slideTo(xDescCenter, yDescCenter, 0.5);
   
   // hide full view
   exit_mc.onRelease = function() {
      var DisappearW = mcW;
      var DisappearH = mcH;
      var DisappearXCenter = (transBG_mc.fake_btn._width/2) - (Number(DisappearW+imageBorder/2)/2);
      var DisappearYCenter = (transBG_mc.fake_btn._height/2) - (Number(DisappearH+imageBorder/2)/2);
      
      imageHolder.alphaTo(0, 0.2, "linear", 0, function() { imageHolder.unloadMovie() });
      //transBG_mc.picBG_mc.slideTo(DisappearXCenter, DisappearYCenter, 0.5, undefined, 0.5);
      //transBG_mc.picBG_mc.bg_mc.tween(["_width", "_height"], [DisappearW, DisappearH], 0.5, undefined, 0.5);
      transBG_mc.picBG_mc.bg_mc.alphaTo(0, 0.5, "linear", undefined);
      transBG_mc.alphaTo(0, 0.5, "linear", undefined, function() { transBG_mc._visible = false;});
      
      
      // disable image nav 
      enableImageNav(false);
      
      this.btnRollOut();
      
      // stop the timer
      myTimer.pause();
   
   }
   exit_mc.onRollOver = function() {
      this.btnRollOver();
   }
   exit_mc.onRollOut = function() {
      this.btnRollOut();
   }
   
   next_mc.onRelease = function() {
      // turn off timer only if autoSlide is true
      if(autoSlide) {
         timerToggle();
      }
      showNextImage(imageHolder);
   }
   next_mc.onRollOver = function() {
      this.btnRollOver();
   }
   next_mc.onRollOut = function() {
      this.btnRollOut();
   }
   
   prev_mc.onRelease = function() {
      // turn off timer only if autoSlide is true
      if(autoSlide) {
         timerToggle();
      }
      showPrevImage(imageHolder);
   }
   prev_mc.onRollOver = function() {
      this.btnRollOver();
   }
   prev_mc.onRollOut = function() {
      this.btnRollOut();
   }
   
   slideshow_mc.onRelease = function() {
      timerToggle();
   }
   slideshow_mc.onRollOver = function() {
      if(!autoSlide) {
         this.btnRollOver();
      }
   }
   slideshow_mc.onRollOut = function() {
      this.btnRollOut();
   }
   
}




MovieClip.prototype.btnRollOver = function() {
   this.btn_mc.bg_mc.colorTo(0x333333, 0.1);
   this.btn_mc.icon_mc.colorTo(0xffffff, 0.1);
}

MovieClip.prototype.btnRollOut = function() {
   this.btn_mc.bg_mc.colorTo(0xffffff, 0.1);
   this.btn_mc.icon_mc.colorTo(0x333333, 0.1);
}




// enable image navigation buttons
function enableImageNav(showNav) {
   if(showNav) {
      if(autoSlide) {
         slideshow_mc.gotoAndStop(3);
      } else {
         slideshow_mc.gotoAndStop(2);
      } 
      next_mc.gotoAndStop(2);
      prev_mc.gotoAndStop(2);
      exit_mc.gotoAndStop(2);
      curImage_txt.colorTo(0x333333, 0.5);
      slideshow_mc.enabled = true;
      next_mc.enabled = true;
      prev_mc.enabled = true;
      exit_mc.enabled = true;
      
   } else {
      slideshow_mc.gotoAndStop(1);
      next_mc.gotoAndStop(1);
      prev_mc.gotoAndStop(1);
      exit_mc.gotoAndStop(1);
      curImage_txt.colorTo(0xcccccc, 0.5);
      slideshow_mc.enabled = false;
      next_mc.enabled = false;
      prev_mc.enabled = false;
      exit_mc.enabled = false;
   }
}

function showNextImage(imageHolder) {
   //total of images in chosen category
   var totalImages = myGallery[curCat]["image"].length;
   if(totalImages-1 > curImage) {
      
      _root.curImage += 1;

   } else if(totalImages-1 == curImage) {
      
      _root.curImage = 0;
      
   }
   
   //fade the picture out
   imageHolder.alphaTo(0, 0.5, "linear");

   var ImgDesc = myGallery[curCat]["image"][curImage]["desc"];
   var ImgFull = myGallery[curCat]["image"][curImage]["img"];
   
   /*
   // disable thumb
   var thumb = imgWrap_mc["thumb_mc"+curImage];
   activateItem(thumb);*/
   
   curImage_txt.text = Number(_root.curImage+1)+" of "+totalImages;
   showFullImage(ImgFull, ImgDesc);
   
}


function showPrevImage(imageHolder) {
   //total of images in chosen category
   var totalImages = myGallery[curCat]["image"].length;
   if(curImage > 0) {
      
      _root.curImage -= 1;

   } else if(curImage == 0) {
      
      _root.curImage = totalImages-1;
      
   }
   
   //fade the picture out
   imageHolder.alphaTo(0, 0.5, "linear");
   var ImgDesc = myGallery[curCat]["image"][curImage]["desc"];
   var ImgFull = myGallery[curCat]["image"][curImage]["img"];
      
   curImage_txt.text = Number(_root.curImage+1)+" of "+totalImages;
   showFullImage(ImgFull, ImgDesc);
   
}


function activateItem(item, oWidth, oHeight) {
   // hide the dropdown if it's open
   if(dropDown) {
      doDropDown();
   }
   
   if (currentItem != false) {
      deactivateItem();
   }
   currentItem = item;

   currentItem.oWidth = oWidth;
   currentItem.oHeight = oHeight;
   currentItem.enabled = false;
}
 
function deactivateItem() {
   currentItem.tween(["_width", "_height"], [currentItem.oWidth, currentItem.oHeight], 2);
   currentItem._parent.viewing_mc.alphaTo(0, 1);
   currentItem._parent.rollover_mc.alphaTo(0, 3);
   currentItem.enabled = true;
   currentItem = undefined;
}

/* prototype for resizing an image to defined size while keeping ratio */
/* it returns an object with new width and height */

MovieClip.prototype.resizeToFit = function (){

   var pMaxWidth = this.maxWidth;
   var pMaxHeight = this.maxHeight;
   
   // determines ratio depends on the width and height
   //this._width>=this._height ? ratio=pMaxWidth/this._width : ratio=pMaxHeight/this._height;
   
   // ratio based on width
   var ratio=pMaxWidth/this._width;

   var resizedImg = new Object();
   resizedImg.newWidth = Math.round(this._width*ratio);
   resizedImg.newHeight = Math.round(this._height*ratio);
   
   return resizedImg;
}


function showTnView(catNum, totalImg) {
   viewMode = "thumbView";
   curCat = catNum;
   
   
   // determine the number of pages needed for viewing thumbnails
   if(totalImg > numThumbDisplay) {
      trace('true');
      thumbNumPages = Math.ceil(totalImg/numThumbDisplay);
      
   } else {
      trace('false');
      // if categories are less than the limit only one page is needed
      thumbNumPages = 1;
   }

   // start from first page
   thumbPageCounter = 1;
         
   // start from 0;
   var pos = 0;
   
   // output page status
   page_txt.text = thumbPageCounter+" of "+thumbNumPages;
   
   // initialize
   prevBtn(thumbPageCounter);
   nextBtn(thumbPageCounter, thumbNumPages);
   
   remove();
   showThumbs(catNum, pos);
   
}
   
function remove() {

   hideCat();
   /*
   // count how many thumbnails are currently sitting inside of imgWrap_mc
   var count = 0;
   for(var each in imgWrap_mc) {
      count++;
   }
   trace(count);
   
   var i=0;
   var temp = _root.createEmptyMovieClip("temp", _root.getNextHighestDepth());
   temp.onEnterFrame = function(){
      if(i<count){
         imgWrap_mc["thumb_mc"+i].tnHider_mc.alphaTo(100, 1, undefined, 0, function() { this._parent.removeMovieClip() });
         //catWrap_mc["cat_mc"+i].alphaTo(0, 1, undefined, 0, function() { });
         //imgWrap_mc["thumb_mc"+i].alphaTo(0, 1, undefined, 0, function() { this.removeMovieClip() });
         
         i++
      } else {
         hideCat();
         delete this.onEnterFrame;
      }
   }
   */
}


function hideCat() {
   for(var i=0; i<catTotal; i++) {
      var eachCat = catWrap_mc["cat_mc"+i];
      
      //eachCat.tween("_x", 0, 1);
      //eachCat.tween("_y", Math.round(Number(eachCat._height+1) *i), 1);
      eachCat._visible = false;
   }
}


function showThumbs(catNum, pos) {
   
   imgWrap_mc.removeMovieClip();
   var imgWrap = _root.createEmptyMovieClip("imgWrap_mc", _root.getNextHighestDepth());

   imgWrap._x = 58;
   imgWrap._y = 120;
   
   dropDown_mc.swapDepths(_root.getNextHighestDepth());
   dropDownBtn_mc.swapDepths(_root.getNextHighestDepth());
   
   var total;

   var totalThumbs = myGallery[catNum]["image"].length;

   var numRows = totalThumbs/catCol;
   
   var xnum = catCol;
   var ynum = numRows;

   var xgap = catColXgap;
   var ygap = catColYgap-28;
   var ox = 0
   var oy = 0
   
   var total = xnum*ynum
   
   var i=pos;
   var j=0; // used to reset the position

   var taco = i+numThumbDisplay;
   
   var temp = _root.createEmptyMovieClip("temp", _root.getNextHighestDepth());
   temp.onEnterFrame = function(){
      
      if(i<taco && i<totalThumbs){
         //trace(i);
         var myImg = imgWrap_mc.attachMovie("thumb", "thumb_mc"+i, i);
         
         myImg._alpha = 0;
         myImg.alphaTo(100, 3);
         myImg.tnHider_mc.alphaTo(0, 3);

         myImg._x = Math.round(ox + (j%xnum)*(xgap + myImg._width-4)); // subtract 9 : because of drop shadow it adds to the width of box
         myImg._y = Math.round(oy + int(j/xnum)*ygap);

         var ImgDate = myGallery[catNum]["image"][i]["date"];
         var ImgTitle = myGallery[catNum]["image"][i]["title"];
         var ImgDesc = myGallery[catNum]["image"][i]["desc"];
         var ImgThumb = myGallery[catNum]["image"][i]["thumb"];
         var ImgFull = myGallery[catNum]["image"][i]["img"];
         
         myImg.title_txt.text =  ImgTitle;
         myImg.date_txt.text =  ImgDate;
         
         myImg.empty_mc.curCat = catNum;
         myImg.empty_mc.curImage = i;
         myImg.empty_mc.imgDesc = ImgDesc;
         myImg.empty_mc.imgToLoad = ImgFull;
         myImg.empty_mc.thumbToLoad = ImgThumb;
         myImg.empty_mc.loadThumb();
      
         j++;
         i++;
      } else {
         delete this.onEnterFrame;
         this.removeMovieClip();
      }
   }
} // end of showThumbs()
   



dropDownBtn_mc.onRelease = function() {
   doDropDown();
}


function doDropDown() {
   if(!dropDown) {
      dropDown_mc.ySlideTo(68, 0.8, "easeOutExpo");
      dropDown = true;
   } else {
      dropDown_mc.ySlideTo(-120, 0.8, "easeOutExpo");
      dropDown = false;
   }
}

dropDown_mc.mask_mc.onEnterFrame = function() {
   
   //only if btns exceed
   if(dropDown_mc.bg_mc.hitTest(_root._xmouse, _root._ymouse, true) && this._parent.catBtn_mc._height > this._height) {
      ymin = this._y+this._height-this._parent.catBtn_mc._height;
      ymax = this._y;
      conv = (this._ymouse-15)*1.3/this._height;
      conv>1 ? conv=1 : null;
      conv<0 ? conv=0 : null;
      this._parent.catBtn_mc.ySlideTo(Math.round(ymax - conv*(ymax-ymin)), 1); 
   }
}

dropDown_mc._y = -120;
dropDown_mc.catBtn_mc.setMask(dropDown_mc.mask_mc);
dropDown_mc.setMask(dropMask_mc);


Os estaré aternamente agradecido, porque mi craneo no da pa más. :D Siento la longitud del post, aunque la pregunta es corta, pero pensé que os haría falta el material. Ojalá este tema creado sea tan interesante como muchos otros encontrados en esta misma web.

Saludos

Por flasheado

7 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 27 Ene 2008 03:37 pm
¿No hay ningún alma caritativa que pueda aportarme una solución? :(

Por flasheado

7 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 28 Ene 2008 02:59 pm
Hahahahaha men, muy largo, nos da pereza XD.

Por gustavogarzon

166 de clabLevel



 

msie7
Citar            
MensajeEscrito el 29 Ene 2008 09:50 am
Sí, es verdad. :oops: Demasiado largo. Acepto la crítica gustavogarzon. Debería haber sido más concreto. Lo que hice fue reflejar el propio lío que tenía en la cabeza. En fin, voy a intentarlo de nuevo a ver si no la cago: Necesito modificar el código AS que tira de datos de un XML para que Flash además de texto e imágenes también edite enlaces. Las líneas concretas de código son:

Código :

   // parse information
   catTotal = gallery.category.length;
   for(var i=0; i<catTotal; i++) { //looping through categories
      myGallery[i] = new Array();
      myGallery[i]["name"] = gallery.category[i].attributes.name;
      myGallery[i]["image"] = new Array();
      //trace(myGallery[i]["name"]);
      var imageCount = gallery.category[i].image.length;
      for(var k=0; k<imageCount; k++) { //looping through images
         myGallery[i]["image"][k] = new Array();
         myGallery[i]["image"][k]["date"] = gallery.category[i].image[k].date.getValue();
         [b]myGallery[i]["image"][k]["title"] = gallery.category[i].image[k].title.getValue();[/b]
         myGallery[i]["image"][k]["desc"] = gallery.category[i].image[k].desc.getValue();
         myGallery[i]["image"][k]["thumb"] = gallery.category[i].image[k].thumb.getValue();
         myGallery[i]["image"][k]["img"] = gallery.category[i].image[k].img.getValue();
         //trace(myGallery[i]["image"][k]["date"]);
      }
   }


¿Qué orden debería modificar en la línea myGallery[i]["image"][k]["title"] = gallery.category[i].image[k].title.getValue(); para que anotando en el XML un enlace URL <title><a href="..."></title> se muestre bien y activo en Flash?

Gracias mil :wink:

Por flasheado

7 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 29 Ene 2008 01:08 pm
No he revisado a profundidad tu script, pero creo que en ese caso, tienes que decirle a tu texto dinamico que ACEPTE HTML, de lo contrario no te va a tomar esa etiqueta <a href="...">.
Pero no se, a mi me parece que hay más soluciones: puedes simplemente pasarle la url, sola... y que flash la tome para sí mismo, en un boton, que tenga ya listo el getURL(direccion, "..."); donde direccion seria la url que extraes al xml.
Es una idea nada mas :P

Por gustavogarzon

166 de clabLevel



 

msie7
Citar            
MensajeEscrito el 29 Ene 2008 01:19 pm
Bueno, creo que lo primero seria crear en el XML un apartado que fuese por ejemplo:
xml.

Código :

<image>
   <date>02.Aug.2006</date>
   <title>Bugatti Veyron</title>
   <desc>Bugatti Veyron</desc>
   <thumb>3d_02.jpg</thumb>
   <img>3d_02.jpg</img>
        <URL>http://direccion.com</URL>
</image>


luego seria cuestion de probar a crearte un boton en el cual al pincharlo cargase la direccion URL he hiciera un getURL(gallery.category[i].attributes.URL,"_blank");
Quizas fuese mas recomendable guardar esto "gallery.category[i].attributes.URL" en una variable global cuando cargas la foto, y que el getURL(nomvariable,"_blank"); sea mas o menos asi cuando pinches sobre el boton. Aunque seguramente alguien te dira algo mas sencillo, que yo aun soy algo novato.

Si no tienes muchos conocimientos de programacion te va a costar, pero no es imposible, asi que animo, todos hemos empezado algun dia.

Saludos!

Por pericles

71 de clabLevel



Genero:Masculino  

in Dublin

firefox
Citar            
MensajeEscrito el 29 Ene 2008 03:00 pm
Gracias mil por vuestros ánimos. Falta me hacen. Bien, la idea que me dais los dos de crear un botón es muy buena. Necesitaría concretarla más para llevarla a cabo. Veamos si sigo bien los pasos:

• En Flash creo el botón, le aplico el getURL(nomvariable,"_blank"), aún no sé cómo, lo incluyo en el clip de la película donde van también el texto de definición de la imagen y el thumbnail de la propia imagen. Cada página en Flash arrojará hasta un total de 15 resultados (puede haber decenas de páginas), y cada uno de esos resultados tendrá un botón que te llevará a su correspondiente web.

• Tengo ya preparado el XML:

Código :

<category name="Gruas">
      <image>
         <title>Gruas Blanco"</title>
         <desc>Alquiler de gruas</desc>
         <thumb>manolo1.jpg</thumb>
         <url>http://www.gruasblanco.com</url>
         <image>manolo2.jpg</image>
      </image>
</category>


• Pero el ActionScript... Ahí es donde me pierdo, ¿cuál sería el código concreto para incluir dentro del array que tengo ya creado?

Una cosa más, gustavogarzon, sí tenía accionada la opción HTML a la ventana de texto dinámico, pero no funcionó.

Por flasheado

7 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 29 Ene 2008 09:35 pm
Ok, no he dicho nada entonces XD.

Por gustavogarzon

166 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 Ene 2008 10:56 am
Entonces... ¿No podeis ayudarme? :crap:

Por flasheado

7 de clabLevel



Genero:Masculino  

safari

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.