Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/08/2008, 03:14
Avatar de editjj
editjj
 
Fecha de Ingreso: febrero-2006
Ubicación: madrid
Mensajes: 34
Antigüedad: 18 años, 2 meses
Puntos: 0
problema onLoadInit en bucle de imagenes

Buenos dias a tod@s,

estoy creando un listado de imagenes, las cuales tengo que redimensionar, ya que es un listado de miniaturas. Despues de buscar información en muchos sitios he llegado al punto de entender que para poder redimensionarlas hay que hacerlo una vez que esten cargadas completamente las imagenes, para esto he dejado de utilizar loadMovie() y he utilizado loadClip() de MovieClipLoader, para poder acceder a las propiedades una vez cargadas con onLoadInit(). He realizado esta prueba:
Código:
this.createEmptyMovieClip("tester_mc" + 1, 1);
this["mcLoader"+ 1] = new MovieClipLoader();
this["mcLoader"+ 1].addListener(this);
this["mcLoader"+ 1].loadClip("prueba.jpg", this["tester_mc" + 1]);

this.createEmptyMovieClip("tester_mc" + 2, 2);
this["mcLoader"+ 2] = new MovieClipLoader();
this["mcLoader"+ 2].addListener(this);
this["mcLoader"+ 2].loadClip("prueba2.jpg", this["tester_mc" + 2]);

function onLoadInit(tester_mc2:MovieClip) {
    trace("onLoadInit: " + tester_mc2);    
    trace ("ancho imagen1," + this["tester_mc" + 1] + ": " + this["tester_mc" + 1]._width);
    trace ("alto imagen1," + this["tester_mc" + 1] + ": " + this["tester_mc" + 1]._height);
    trace ("ancho imagen2," + this["tester_mc" + 2] + ": " + this["tester_mc" + 2]._width);
    trace ("alto imagen2," + this["tester_mc" + 2] + ": " + this["tester_mc" + 2]._height);
}
en la ventana de salida tenemos:
Código:
onLoadInit: _level0.tester_mc2
ancho imagen1,_level0.tester_mc1: 660
alto imagen1,_level0.tester_mc1: 440
ancho imagen2,_level0.tester_mc2: 534
alto imagen2,_level0.tester_mc2: 677
onLoadInit: _level0.tester_mc1
ancho imagen1,_level0.tester_mc1: 660
alto imagen1,_level0.tester_mc1: 440
ancho imagen2,_level0.tester_mc2: 534
alto imagen2,_level0.tester_mc2: 677
hasta aqui todo me sirve y me funciona, el problema viene cuando intento crear un bucle, ya que el listado de imagenes lo saco de un XML. El código con el que creo el bucle es:
Código:
var pageOrder:Array = Array("prueba.jpg", "prueba2.jpg", "prueba.jpg", "prueba2.jpg", "prueba.jpg");



for( i = 0; i < 5; i++){

        var t = listado.dummy.duplicateMovieClip("tester_mc"+i, i);
        this["mcLoader"+ i] = new MovieClipLoader();
        this["mcLoader"+ i].addListener(this);
        this["mcLoader"+ i].loadClip( pageOrder[i] , t.pic);        
        t._x = i * 90; // posición x, primer valor 0
        
        
    function onLoadInit(tester_mc:MovieClip) {
        
        trace("onLoadInit: " + tester_mc);    
        trace ("ancho imagen1," + this["tester_mc" + 1] + ": " + this["tester_mc" + 1]._width);
        trace ("alto imagen1," + this["tester_mc" + 1] + ": " + this["tester_mc" + 1]._height);
        trace ("ancho imagen2," + this["tester_mc" + 2] + ": " + this["tester_mc" + 2]._width);
        trace ("alto imagen2," + this["tester_mc" + 2] + ": " + this["tester_mc" + 2]._height);
    }
        
}
con esto, no se entra nunca en el onLoadInit(), he probado a sacar esta función del bucle for(), pero los resultados son los mismos.

¿alguién ve el error por algún lado, o conoce la manera correcta de hacerlo?

a la espera de comentarios

muchas gracias



ya he conseguido solucionarlo, dejo aqui el código para quién lo pueda necesitar.
Código:
// defino la matriz y le doy valores
var pageOrder:Array = Array("prueba.jpg", "prueba2.jpg", "prueba.jpg", "prueba2.jpg", "prueba.jpg");
// ejecuto la función que crea el listado
crear_listado();

// con esto comprobamos todas las cargas que se hacen con MovieClipLoader()
function onLoadInit(mc:MovieClip) {        
    trace("onLoadInit: " + mc);    
    trace ("ancho imagen: " + mc._width);
    trace ("alto imagen: " + mc._height);
    mc._width = mc._height = 80;
}

// creo la función para generar el listado
function crear_listado():Void
{
    for( i = 0; i < pageOrder.length; i++){
    
            var t = listado.dummy.duplicateMovieClip("tester_mc"+i, i);
            this["mcLoader"+ i] = new MovieClipLoader();
            this["mcLoader"+ i].addListener(this);
            this["mcLoader"+ i].loadClip( pageOrder[i] , t.pic);
            
            t._y = i * 90; // posición x, primer valor 0
            
    }
}

Última edición por editjj; 20/08/2008 a las 03:37 Razón: solucionado