Foros del Web » Creando para Internet » Flash y Actionscript »

No puedo agregar preload a galeria de imagenes

Estas en el tema de No puedo agregar preload a galeria de imagenes en el foro de Flash y Actionscript en Foros del Web. Hola chicos. Tengo una consulta. Estuve lidiando mucho con esto, y aun no puedo solucionarlo. Tengo una galeria de fotos en flash, la cual fui ...
  #1 (permalink)  
Antiguo 23/04/2010, 05:05
 
Fecha de Ingreso: marzo-2009
Mensajes: 91
Antigüedad: 15 años, 1 mes
Puntos: 1
No puedo agregar preload a galeria de imagenes

Hola chicos.

Tengo una consulta. Estuve lidiando mucho con esto, y aun no puedo solucionarlo.

Tengo una galeria de fotos en flash, la cual fui realizando viendo un videotutorial.

La galeria de imagenes funciona correctamente, las imagenes se cargan desde un XML y las muestra correctamente. Todo el codigo de la galeria esta en el primer fotograma.

Ahora, cuando yo quiero agregar el preload, agrego un preload que ya se que ha funcionado en otras animaciones flash. Pero al ponerlo en la galeria falla totalmente.

Es como si el preload no funcionara, y posteriormente, la galeria se desordena toda y se crean mas de los objetos estipulados.

Al preload lo agrego en el primer fotograma, con su codigo correspondiente. Y a la galeria la ubico en el segundo.

Si desean ver la galeria, la saque de la web "videoaprende . c o m" se llama menu carrusel en AS 2.

Igualmente aqui les dejo el codigo que yo tengo.

FOTOGRAMA 1

En este fotograma existe el objeto loader. Que simula la carga con la interpolacion de forma en los fotogramas de 1 a 100.

Código ActionScript:
Ver original
  1. var hiloPrecarga = setInterval(cargando, 1);
  2. function cargando() {
  3.     var total, cargados, porcentaje;
  4.     total = _root.getBytesTotal();
  5.     cargados = _root.getBytesLoaded();
  6.     porcentaje = Math.floor((cargados*100)/total);
  7.     loader.gotoAndStop(porcentaje);
  8.     if (cargados == total) {
  9.       clearInterval(hiloPrecarga);
  10.       gotoAndStop(2);
  11.     }
  12. }
FOTOGRAMA 2

Aqui, la galeria va realizando los attachMovie dependiendo de la cantidad de imagenes a cargar.

Código ActionScript:
Ver original
  1. //var num:Number = 10;
  2. var radioX:Number= 300;
  3. var radioY:Number= 100;
  4. var centroX:Number= Stage.width /2;
  5. var centroY:Number= (Stage.height /2-100);
  6. var perspectiva:Number = 50;
  7. var velocidad:Number= 0.1;
  8. var xml:XML= new XML();
  9. xml.ignoreWhite=true;
  10. xml.load("datos.xml");
  11.  
  12. xml.onLoad=function(){
  13.  
  14.     var  nodo = xml.firstChild.childNodes;
  15.    
  16.     for (i = 0; i < nodo.length; i++){
  17.        
  18.         var mcs= attachMovie("item", "item" + i, i);    
  19.         mcs.angle = i * ((Math.PI*2)/nodo.length);
  20.         mcs.onEnterFrame= Movimiento;
  21.         mcs.alpha=0;
  22.         //Si se desea poner link en las fotos deben descomentarse las lineas coment    
  23.         //mcs.foto_mc.url_flash= nodo[i].attributes.url_xml;
  24.         mcs.foto_mc.final_mc.loadMovie(nodo[i].attributes.nom_xml);
  25.         mcs.reflejo_mc.loadMovie(nodo[i].attributes.nom_xml);
  26.         //mcs.foto_mc.onPress= function(){
  27.         //  geturl("");
  28.         //}
  29.        
  30.     }
  31. };
  32.  
  33.  
  34. function Movimiento(){
  35.     this._x=    Math.cos(this.angle)*radioX + centroX;
  36.     this._y=    Math.sin(this.angle)*radioY + centroY;
  37.     this.angle += this._parent.velocidad;
  38.     var s= (this._y - perspectiva) / (centroY + radioY - perspectiva);
  39.     this._xscale = 100*s;
  40.     this._yscale = 100*s;
  41.     this.swapDepths(Math.round(this._xscale) + 100 );
  42.    
  43. }
  44.  
  45.  
  46.  
  47. this.onMouseMove =function (){
  48.     velocidad =(this._xmouse - centroX)/2000;
  49.     }


Desde la web, se pueden descargar los archivos, para que vean como es la galeria y que objetos tiene.

Si me dan una solución se los agradeceria.

Muchas Gracias.
  #2 (permalink)  
Antiguo 23/04/2010, 05:41
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: No puedo agregar preload a galeria de imagenes

En el primer fotograma ya tienes un error de concepto creo yo. Lo primero de todo es que el preloader analiza si esta cargado el stage principal (_root). En la primera ejecución de la función te dará afirmativo y borrará el interval pq el root en si mismo esta cargado completamente, lo que no esta cargado (pero eso tu preload no lo analiza) son los archivos externos de la galería.

Otro detalle: usas un interval que se ejecuta cada 1 milisegundo!!! si alguién tien una ADSL lenta y tarda mucho en desactivarse el interval, se puede producir un error en el flash y saturarlo (no tiene pq ocurrir pero puede). Yo usaria la clase MovieClipLoader que para eso ha sido creada y con su método progress ppodrás actualizar el estado de tu carga pq te va avisar de todos los "progresos" en tu carga, incluso te dirá cuando se ha terminado para poder lanzar una nueva carga y así no tener todas las imágenes cargando al mismo tiempo. Tal y como lo tienes planteado si tuvieras que cargar 1000 imágenes cargarían todas a la vez.
__________________
El camino hacia la cima es, como el viaje hacia uno mismo, una ruta en solitario.
  #3 (permalink)  
Antiguo 24/04/2010, 14:18
 
Fecha de Ingreso: marzo-2009
Mensajes: 91
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: No puedo agregar preload a galeria de imagenes

Hola dualklip.

Gracias por tu respuesta. Me imagine que nunca miraba la carga de imagenes externas. Porque por ejemplo en algunos casos que probaba. Quizas qudaban todos los contenedores de imagenes, y las imagenes iban apareciendo recien cuando pasaban 3 o mas minutos.
Voy a ver si encuentro algun ejemplo de la clase, si tienes algune jemplo rapido para aplicar me podrias mostrar?

Gracias.

Etiquetas: galeria, imagenes, preload
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:38.