Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/12/2008, 08:54
Guillon
 
Fecha de Ingreso: diciembre-2007
Mensajes: 38
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Me aparece una barra de carga indeseada

SOLUCIONADO!!!!!
Probando y rompiendome la cabeza de a ratos largos pude comprender por qué razón me estaba apreciendo una barra de precarga en la esquina superior del SWF cada vez que clickeaba un botón que cargaba un SWF externo mediante MovieClipLoader.
El problema es que todos los SWF externos los estaba cargando con la mismas instancias de clase que había creado de MovieClipLoader y de Listener... entonces tenía esto: Para cargar los SWF siempre utilizaba la instancia "precargadorGalerias_mc" de la clase MovieClipLoader y el Listener era "listenerGalerias", como bien puede verse en los códigos que tipée en mi primer mensaje
Se solucionó cuando cree una instancia de MovieClipLoader y un Listener para cada uno de los SWF que tenía que cargar, es decir, por ejemplo para cargar el SWF "header" cree "var precargadorHeader_mc:MovieClipLoader = new MovieClipLoader", para el SWF "perro" cree "var precargadorPerro_mc:MovieClipLoader = new MovieClipLoader" y así, con cada uno de los SWF. También tuve que crear su correspondiente Listener para cada uno de los SWF (también tiepando todo el proceso de "onLoadStart / onLoadProgress / onLoadComplete "para cada uno, que por suerte para todos uso las mismas acciones pero cambiando solo el nombre del Listener).

RESULTADO FINAL:
CÓDIGO PRECARGA
Código actionscript:
Ver original
  1. //--- CARGADORES ---//
  2. var precargadorHeader_mc:MovieClipLoader = new MovieClipLoader();
  3. var listenerHeader:Object = new Object();
  4. var precargadorPerro_mc:MovieClipLoader = new MovieClipLoader();
  5. var listenerPerro:Object = new Object();
  6. var precargadorGato_mc:MovieClipLoader = new MovieClipLoader();
  7. var precargadorConejo_mc:MovieClipLoader = new MovieClipLoader();
  8.  
  9. //--- como veran, no me hizo falta tipear una variable de listener para los nuevos, me funcionó perfectamente simplemente tipeando el listener abajo ---//
  10.  
  11. //LISTENER HEADER//
  12. listenerHeader.onLoadStart = function (target_mc) {
  13.     _root.attachMovie("barra_header","barra_header_mc", _root.getNextHighestDepth());
  14.     _root.barra_header_mc._y = 500;
  15.     _root.barra_header_mc._x = 100;
  16.     _root.barra_header_mc._yscale = 80;
  17.     _root.barra_header_mc._xscale = _root.barra_header_mc._yscale;
  18. };
  19. listenerHeader.onLoadProgress = function (target_mc, loadedBytes, totalBytes) {
  20.     var porcentaje:Number;
  21.     porcentaje = Math.round((loadedBytes*100)/totalBytes);
  22.     _root.barra_header_mc.gotoAndStop(porcentaje);
  23.     target_mc._visible = false;
  24.     target_mc.stop();
  25.     target_mc._alpha = 0;
  26.     _root.barra_header_mc.texto_carga.mensaje.text = porcentaje + " %";
  27. };
  28. listenerHeader.onLoadComplete = function (target_mc) {
  29.     alfaCargador(0, _root.barra_header_mc, _root.barra_header_mc.texto_carga);
  30.     target_mc._visible = true;
  31.     alfaClip (100, target_mc);
  32.     target_mc.play();
  33.     if (_root.barra_header_mc.texto_carga._alpha = 0) {
  34.         delete _root.barra_header_mc;
  35.         delete listener;
  36.     }
  37. };
  38. //LISTENER PERRO//
  39. listenerPerro.onLoadStart = function (target_mc) {
  40.     _root.attachMovie("barra_galerias","barra_galerias_mc", _root.getNextHighestDepth());
  41.     _root.barra_galerias_mc._y = 500;
  42.     _root.barra_galerias_mc._x = 500;
  43.     _root.barra_galerias_mc._yscale = 80;
  44.     _root.barra_galerias_mc._xscale = _root.barra_galerias_mc._yscale;
  45. };
  46. listenerPerro.onLoadProgress = function (target_mc, loadedBytes, totalBytes) {
  47.     var porcentaje:Number;
  48.     porcentaje = Math.round((loadedBytes*100)/totalBytes);
  49.     _root.barra_galerias_mc.gotoAndStop(porcentaje);
  50.     target_mc._visible = false;
  51.     target_mc.stop();
  52.     target_mc._alpha = 0;
  53.     _root.barra_galerias_mc.texto_carga.mensaje.text = porcentaje + " %";
  54. };
  55. listenerPerro.onLoadComplete = function (target_mc) {
  56.     alfaCargador(0, _root.barra_galerias_mc, _root.barra_galerias_mc.texto_carga);
  57.     target_mc._visible = true;
  58.     alfaClip (100, target_mc);
  59.     target_mc.play();
  60.     if (_root.barra_galerias_mc.texto_carga._alpha = 0) {
  61.         delete _root.barra_galerias_mc;
  62.         delete listener;
  63.     }
  64. };
  65.  
  66. //LISTENER GATO//
  67. listenerGato.onLoadStart = function (target_mc) {
  68.     _root.attachMovie("barra_galerias","barra_galerias_mc", _root.getNextHighestDepth());
  69. ...
  70.  
  71. y así, no voy a seguir para no hacer un post enorme, pero la idea general se entiende, ¿no?.

CODIGO BOTONES
Código actionscript:
Ver original
  1. //PRESS DE LOS BOTONES
  2. obras_mc.perro_btn.onPress = function(){
  3.     _root.galerias_mc.unloadMovie();
  4.     _root.precargadorPerro_mc.addListener(_root.listenerPerro);
  5.     _root.precargadorPerro_mc.loadClip("galerias/perro.swf", _root.galerias_mc);
  6. };
  7. obras_mc.gato_btn.onPress = function(){
  8.     _root.galerias_mc.unloadMovie();
  9.     _root.precargadorGato_mc.addListener(_root.listenerGato);
  10.     _root.precargadorGato_mc.loadClip("galerias/gato.swf", _root.galerias_mc);
  11. };
  12. obras_mc.conejo_btn.onPress = function(){
  13.     _root.galerias_mc.unloadMovie();
  14.     _root.precargadorConejo_mc.addListener(_root.listenerConejo);
  15.     _root.precargadorConejo_mc.loadClip("galerias/conejo.swf", _root.galerias_mc);
  16. };
Bueno, es como ayuda, pero yo soy simplemente un dibujante que quiere hacer su propia web, así que con esto imagino que los programadores de verdad de este foro podrán hacer algo mejor (sobretodo por eso de los listener que son siempre iguales pero solo cambia el nombre).
Saludos gente y espero que pueda servirle a alguien.

Última edición por Guillon; 12/12/2008 a las 09:30