Visualizzazione dei risultati da 1 a 4 su 4

Discussione: ciclo e onLoadInit

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410

    ciclo e onLoadInit

    Salve,
    da un txt esterno recupero una serie di variabili per poi caricare testi ed immagini sulla mia pagina.
    Il problema è che faccio un ciclo per caricare delle immagini e volevo utilizzare onLoadInit per attendere che ogni immagine sia caricata, recuperarne la dimensione per poi distribuirle con precisione sulla pagina. Ma sbaglio proprio la logica nell'utilizzo del listner...

    caricaImmaginiRassegna = function (primo) {
    var miaStringa:String = mesi[primo];
    Tot = new Number(miaStringa);
    _root.createEmptyMovieClip("text_mc", 50);
    _root.text_mc._x = 300;
    _root.text_mc._y = 100;
    trace (Tot);//verifico che il valore sia quello caricato cioè 3
    for (_root.j=1; _root.j<=Tot; _root.j++) {
    trace (j);//verifico il numero di cicli eseguiti
    _root.text_mc.createEmptyMovieClip("cover"+j, j);
    var mclListener:Object = new Object();
    mclListener.onLoadInit = function(target_mc:MovieClip) {
    trace(j);//qui il valore di j è magicamente diventato 4
    dim = _root.text_mc["cover"+j]._width; //cerco erratamente il recupero di width da una cover4 che non esiste!
    trace (dim);

    };
    var image_mcl:MovieClipLoader = new MovieClipLoader();
    image_mcl.addListener(mclListener);
    image_mcl.loadClip("img/novembre_"+j+".jpg", _root.text_mc["cover"+j]);
    }
    _root.visibilitaScroll();
    };

    mi sa che non posso utilizzare il Listner dentro il ciclo ma come fare
    ...in più la variabile j dentro al Listner è 4 ??? com'è possibile se il ciclo viene eseguito solo 3 volte?


  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    secondo quanto hai scritto, l'interpretazione corretta di quello script dovrebbe essere questa

    codice:
    var caricaImmaginiRassegna:Function = function (primo:Number):Void {
    	var miaStringa:String = mesi[primo];
    	var Tot:Number = new Number(miaStringa);
    	_root.createEmptyMovieClip("text_mc", 50);
    	_root.text_mc._x = 300;
    	_root.text_mc._y = 100;
    	var mclListener:Object = new Object();
    	mclListener.j = 0;
    	var image_mcl:MovieClipLoader = new MovieClipLoader();
    	mclListener.onLoadInit = function(target_mc:MovieClip) {
    		var dim = _root.text_mc["cover"+this.j]._width;
    		trace(dim);
    	};
    	image_mcl.addListener(mclListener);
    	for (var j = 1; j <= Tot; j++) {
    		_root.text_mc.createEmptyMovieClip("cover"+j, j);
    		mclListener.j = j;
    		image_mcl.loadClip("img/novembre_"+j+".jpg", _root.text_mc["cover"+j]);
    	}
    	_root.visibilitaScroll();
    };

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410
    grazie provo subito avedere se mi funziona!

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410
    Facendo come mi hai indicato recuperava comunque solo la dimensione dell'ultima immagine
    allora ho spostato tutto in una fuonzione esterna chiamata dal ciclo... per qualche motivo "funziona" nel senso che chiama tutte le immagini, facendo un trace vedo che ho le misure di tutte... ma a schermo visualizzo solo quelle dell'ultimo ciclo. Ben!
    Le cancello man mano che carico quelle nuove???


    spazio = 400;
    riga = 50;
    K = 1;
    vadoAcapo = 0;
    totMesi = 0;
    VarListener = 80;
    //
    caricaRassegna();
    //
    function caricaRassegna() {
    mesi = new LoadVars();
    mesi.onLoad = function(success) {
    if (success) {
    //******Formatto e scrivo il testo nome del mese sullo stage
    var formattazioneMese:TextFormat = new TextFormat();
    with (formattazioneMese) {
    bold = true;
    font = "Arial";
    size = 16;
    color = 0xFF9900;
    }
    with (_root.nomeRegione) {
    setNewTextFormat(formattazioneMese);
    multiline = false;
    autoSize = true;
    bold = true;
    }
    //******
    var my_string:String = mesi.rassegnaMese;
    var my_array:Array;
    my_string = my_string.split("\n").join("");
    my_array = my_string.split(",");
    totMesi = my_array.length;
    for (i=0; i<=totMesi-2; i++) {
    _root.caricaImmaginiRassegna(my_array[i]);
    if (_root.spazio<=650 && _root.K == 1) {
    _root.riga = 70;
    } else {
    _root.riga = 90;
    if (K == 1) {
    _root.spazio = 400;
    }
    _root.K = 2;
    }
    _root.createEmptyMovieClip("MC_Mese_"+i, i);
    with (_root["MC_Mese_"+i]) {
    _x = _root.spazio;
    _y = _root.riga;
    createTextField("mese_Btn", 1, 0, 0, 2, 2);
    }
    var formattazione:TextFormat = new TextFormat();
    with (formattazione) {
    bold = true;
    font = "Arial";
    size = 12;
    color = 0x000000;
    }
    with (_root["MC_Mese_"+i].mese_Btn) {
    setNewTextFormat(formattazione);
    multiline = false;
    autoSize = true;
    text = my_array[i];
    }
    _root.misuraPrec = _root["MC_Mese_"+i].mese_Btn.textWidth;
    _root.spazio = _root.spazio+misuraPrec+10;
    if (i<=totMesi-3) {
    _root.attachMovie("righina", "righina"+i, i+100);
    _root["righina"+i]._x = _root.spazio-5;
    _root["righina"+i]._y = riga;
    }
    _root["MC_Mese_"+i].onPress = function() {
    //ciclo per cambiare colore e riabilitare tutti i btn mese_Btn
    for (i=0; i<=totMesi; i++) {
    var mycolor:Color = new Color("MC_Mese_"+i);
    mycolor.setRGB(0x000000);
    _root["MC_Mese_"+i].enabled = true;
    }
    //disabilito e rendo arancione solo il btn cliccato
    var mycolor:Color = new Color(this);
    mycolor.setRGB(0xFF9900);
    this.enabled = false;
    //elimino tutti gli a capo
    var miaStringa:String = mesi[this.mese_Btn.text];
    miaStringa = miaStringa.split("\r").join("");
    _root.text_mc.nominativi.text = miaStringa;
    _root.visibilitaScroll();
    };
    }
    }
    };
    mesi.load("rassegna.txt");
    }
    var stile = new TextField.StyleSheet();
    stile.onLoad = function() {
    };
    stile.load("mimo.css");
    //testo mesi
    var caricaImmaginiRassegna:Function = function (mese:String):Void {
    meseY = _root.vadoAcapo+100;
    var miaStringa:String = mesi[mese];
    var Tot:Number = new Number(miaStringa);
    _root.createEmptyMovieClip("text_mc_"+mese, _root.VarListener);
    trace("text_mc_"+mese);
    _root["text_mc_"+mese]._x = 300;
    _root["text_mc_"+mese]._y = meseY;
    for (j=1; j<=Tot; j++) {
    Listn("cover", mese, j);
    }
    _root.visibilitaScroll();
    };
    function Listn(nome:String, mese:String, j:Number) {
    var mclListener:Object = new Object();
    mclListener.j = _root.VarListener;
    var image_mcl:MovieClipLoader = new MovieClipLoader();
    mclListener.onLoadInit = function(target_mc:MovieClip) {
    var dim = ["text_mc_"+mese][nome+this.j]._width;
    _root["text_mc_"+mese][nome+this.j]._x = 90*j;
    _root["text_mc_"+mese][nome+this.j]._y = 10*j;
    };
    image_mcl.addListener(mclListener);
    _root["text_mc_"+mese].createEmptyMovieClip(nome+j, _root.VarListener);
    mclListener.j = j;
    _root.VarListener++;
    image_mcl.loadClip("img/"+mese+"_"+j+".jpg", _root["text_mc_"+mese][nome+j]);
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.