Comunidad de diseño web y desarrollo en internet online

Ayuda con Slideshow dinámica

Citar            
MensajeEscrito el 20 Jul 2011 01:21 pm
Buen día!

estaba necesitando ayuda con una carga de imágenes dinámica, espero que alguien me pueda dar una mano, el código que tengo funciona a la perfección pero le quiero arreglar un detalle: necesito que cargue las imágenes aleatoriamente

el código que tengo es este:


Código ActionScript :

import mx.transitions.Tween;
import mx.transitions.easing.*;

var myShowXML = new XML();
myShowXML.ignoreWhite = true;
myShowXML.load("slideshow.xml");

myShowXML.onLoad = function() {
   _root.myWidth = myShowXML.firstChild.attributes.width;
   _root.myHeight = myShowXML.firstChild.attributes.height;
   _root.mySpeed = myShowXML.firstChild.attributes.speed;

   _root.myImages = myShowXML.firstChild.childNodes;
   _root.myImagesNo = myImages.length;

   createContainer();
   callImages();

};


   _root.createEmptyMovieClip("myContainer_frame",2);
   myContainer_frame.swapDepths(1048524);
   myContainer_mc._x = 0;
   myContainer_mc._y = 0;
myContainer_frame.loadMovie("marcoflash.png");

_root.createEmptyMovieClip("movieClip_mc",3);
movieClip_mc.swapDepths(1048570);
movieClip_mc._x = 331;
movieClip_mc._y = 109;
movieClip_mc.attachMovie('flia','fliaload',4);
   
function createContainer() {
   _root.createEmptyMovieClip("myContainer_mc",1);

   myContainer_mc._x = 0;
   myContainer_mc._y = 0;

}

function callImages() {

   _root.myMCL = new MovieClipLoader();
   _root.myPreloader = new Object();
   _root.myMCL.addListener(_root.myPreloader);

   _root.myClips_array = [];

   _root.myPreloader.onLoadStart = function(target) {

      _root.createTextField("myText_txt",_root.getNextHighestDepth(),0,0,100,20);
      _root.myText_txt._x = (Stage.width-_root.myText_txt._width)/2;
      _root.myText_txt._y = (Stage.height-_root.myText_txt._height)/2;
      _root.myText_txt.autoSize = "center";

      _root.myText_txt.text = "test";

   };

   _root.myPreloader.onLoadProgress = function(target) {

      _root.myText_txt.text = "cargando.. "+_root.myClips_array.length+"/"+_root.myImagesNo+" Completed";

   };


   _root.myPreloader.onLoadComplete = function(target) {

      _root.myClips_array.push(target);
      target._alpha = 0;

      if (_root.myClips_array.length == _root.myImagesNo) {

         _root.myText_txt._y = myContainer_mc._y + myContainer_mc._height;
         _root.target_mc = -1;
         moveSlide();
         myShowInt = setInterval(moveSlide, (_root.mySpeed*1000)+1000);


      }

   };

   for (i=0; i<_root.myImagesNo; i++) {

      temp_url = _root.myImages[i].attributes.url;
      temp_mc = myContainer_mc.createEmptyMovieClip(i, myContainer_mc.getNextHighestDepth());

      _root.myMCL.loadClip(temp_url,temp_mc);
   }

}


function moveSlide() {

   current_mc = _root.myClips_array[_root.target_mc];
   new Tween(current_mc, "_alpha", Strong.easeOut, 100, 0, 1, true);

   _root.target_mc++;

   if (_root.target_mc>=_root.myImagesNo) {
      _root.target_mc = 0;
   }
   
   _root.myText_txt.text = _root.myImages[target_mc].attributes.title;
   next_mc = _root.myClips_array[_root.target_mc];
   new Tween(next_mc, "_alpha", Strong.easeOut, 0, 100, 1, true);

}



muchas gracias desde ya! :D

Por Kim Arequim

10 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 20 Jul 2011 03:12 pm
Ahora las carga todas en orden, de la primera a la última, ¿necesitas que la secuencia sea aleatoria? Si es eso, primero tienes que buscar por "secuencia aleatoria que no se repita", hay una decena de POST al respecto, pues eso es lo que tienes que aplicar

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Jul 2011 05:26 pm
Jorge, gracias por responder, estuve buscando pero no encontré nada para este tema :(

Por Kim Arequim

10 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 20 Jul 2011 05:44 pm
Tu tienes una secuencia lineal de 0 al nro de imagenes que hayas especifucado que carga así>

Código ActionScript :

for (i=0; i<_root.myImagesNo; i++) { 
      temp_url = _root.myImages[i].attributes.url; 
      temp_mc = myContainer_mc.createEmptyMovieClip(i, myContainer_mc.getNextHighestDepth()); 
      _root.myMCL.loadClip(temp_url,temp_mc); 
   } 


Y como se especifica en este POST sobre secuencias que no se repitan http://foros.cristalab.com/como-creo-una-multiimagen-aleatoria-c-varios-clips-t57175/ , puedes usar esto para crear un array que mezcle esos mismos numeros sin repetir

Código ActionScript :

var randomOrder:Array = new Array();
var total:Number = _root.myImagesNo.length
for(var i=0; i<total; i++) {
  randomOrder.push(_root.myImagesNo.splice(int(Math.random()*_root.myImagesNo.length), 1))
}


Ahora tienes el mismo array, pero desordenado, si cambias el que tienes por este ya tienes el orden aleatorio

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Jul 2011 06:17 pm
jorge, gracias nuevamente por la respuesta, probé lo que sugería pero el espacio de las imágenes queda en blanco, no las carga

Por Kim Arequim

10 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 20 Jul 2011 06:24 pm
Ahora no puedes tomar el valor del contador, sino el que tiene el Array

temp_url = _root.myImages[randomOrder[i]].attributes.url;

Ya que has creado un array numericamente desordenado

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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