Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    uguaglianza mica tanto uguale...

    carico una variabile da un file di testo con loadVars e va tutto bene
    codice:
    lv = new LoadVars();
    	lv.load(igm+".txt");
    	lv.onLoad = function(success) {
    		if (success) {
    			_root.slide["immagine"+i].cli = this.cliente;
    		}
    	};

    se all'interno dell'if metto il codice
    codice:
    _root.slide["immagine"+i].cli = this.cliente;
    trace(this.cliente);
    trace(_root.slide["immagine"+i].cli);
    il risultato del trace è

    1
    undefined

    (il file di testo è questo -> "cliente=1")


    l'oggetto _root.slide["immagine"+i] esiste e ho già settato delle variabili allo stesso modo che però funzionano...probabilmente è una stupidaggine ma non riesco a venirne a capo
    ma dico io, perchè se pongo l'uguaglianza flash non me la legge? forse devo inizializzare la variabile? e perchè qui sì e altrove no? mah

    qualcuno saprebbe intuire (magari è palese XD) che cosa sbaglio?


    grazie mille
    ...Ignorance is bliss...

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Beh ma "i" non è definita da nessuna parte, come fa il programma a capire come dovrebbe interpretarla?

  3. #3
    grazie per l'intervento ma...come ho già specificato lo script di richiamo delle variabili funziona perfettamente (la i è un indice e funziona all'interno di un for) e lo stesso il settaggio di altre variabili fuori dall'"if (success)" sempre all'interno dell'oggetto in questione

    non ho postato il resto del codice per evitare di appesantire la discussione.

    poi visto che il trace funziona si capisce che la i è definita altrove e correttamente.


    il problema è qui (o meglio, qui non funziona)

    _root.slide["immagine"+i].cli = this.cliente;
    trace(this.cliente);
    trace(_root.slide["immagine"+i].cli);

    in cui l'identità non viene considerata
    Ribadisco che più in avanti sempre nel for ma fuori dalla raccolta delle variabili dal file di testo (che specifico, funziona!) definisco la variabile alfa così-> _root.slide["immagine"+i].alfa = 100; che mi funziona perfettamente

    se ci sono altri dubbi sono qua
    thnx
    ...Ignorance is bliss...

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao.
    A mio parere l'istanza _root.slide["immagine"+i] non esiste in quel preciso momento.

    Metti dei trace, dove hai messo gli altri due, per verificare l'esistenza e la correttezza dei vari elementi che costituiscono il percorso dell'istanza.

    Ad es:
    codice:
    trace("i = "+i);
    trace("slide = "+_root.slide);
    trace("immagine = "+_root.slide["immagine"+i]);
    Se ricevi qualche "undefined" puoi capire cosa non sta andando.
    Eventualmente posta l'output qui.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da KillerWorm
    Ciao.
    A mio parere l'istanza _root.slide["immagine"+i] non esiste in quel preciso momento.
    Esattamente, in un evento asincrono, che per di più si riferisce ad un oggetto a cui non appartiene "i", quel valore è indefinito.

  6. #6
    faccio delle prove
    thnx
    ...Ignorance is bliss...

  7. #7
    giusto per ipercontrollo ho riverificato ciò che avevo detto all'inizio

    copio parte del codice

    codice:
    	_root.slide["immagine"+i].i = i;
    		trace(	_root.slide["immagine"+i].i )
    lv = new LoadVars();
    	lv.load(igm+".txt");
    	lv.onLoad = function(success) {
    		if (success) {
    			_root.slide["immagine"+i].cli = this.cliente;
    			trace(this.cliente);
    			trace(_root.slide["immagine"+i].cli);		}
    	};
    	delete lv;
    il trace dà come risultato

    1
    1
    undefined


    traducendo: l'oggetto esiste, le variabili pure, il loadvars funziona perfettamente.
    what's wrong?
    ...Ignorance is bliss...

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Quell'istanza non esiste.. può dipendere da un problema secondario... per dirne una, magari stai caricando un swf dentro un alro e non hai messo lockroot..

    Puoi fare esattamente come ti ho indicato così capisco da dove partire per individuare il problema?

    Metti questo dentro la condizione if (success)
    codice:
    trace("i = "+i);
    trace("slide = "+_root.slide);
    trace("immagine = "+_root.slide["immagine"+i]);
    e posta l'output
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  9. #9
    siore e siori
    ecco il risultato

    i = 8
    slide = _level0.slide
    immagine = undefined

    e quindi come faccio XD

    non riesco a capire come mai l'istanza non esiste se lo script viene richiamato dopo che l'ho creata (e soprattutto dopo che gli ho anche assegnato con successo una variabile)
    non so neanche cosa sia il lockroot XD

    questo è lo script completo

    for (i=1; i<=_root.lavori; i++) {

    if (i<10) {
    igm = "00"+i;
    }

    igm = _root.percorsolavori+"/"+igm;/*aggiungo il percorso*/
    _root.slide.attachMovie("immagine","immagine"+i,10 00+i);

    _root.slide["immagine"+i].attaccaimmagine.loadMovie(igm+".png");
    _root.slide["immagine"+i].i = i;

    lv = new LoadVars();
    lv.load(igm+".txt");
    lv.onLoad = function(success) {
    if (success) {
    _root.slide["immagine"+i].cli = this.cliente;

    trace("i = "+i);
    trace("slide = "+_root.slide);
    trace("immagine = "+_root.slide["immagine"+i]);

    }
    };
    }

    questo script funziona perfettamente, l'unica cosa che non riesco a fare è assegnare all'istanza (che ora abbiamo scoperto non esistere nel momento in cui io desideravo) il valore preso dal file di testo

    thnx again
    ...Ignorance is bliss...

  10. #10
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Riporto qui lo script formattato, giusto per leggerlo meglio:
    codice:
    for (i=1; i<=_root.lavori; i++) {
    	if (i<10) {
    		igm = "00"+i;
    	}
    	igm = _root.percorsolavori+"/"+igm;
    	_root.slide.attachMovie("immagine", "immagine"+i, 1000+i);
    	_root.slide["immagine"+i].attaccaimmagine.loadMovie(igm+".png");
    	_root.slide["immagine"+i].i = i;
    	lv = new LoadVars();
    	lv.load(igm+".txt");
    	lv.onLoad = function(success) {
    		if (success) {
    			_root.slide["immagine"+i].cli = this.cliente;
    			trace("i = "+i);
    			trace("slide = "+_root.slide);
    			trace("immagine = "+_root.slide["immagine"+i]);
    		}
    	};
    }
    Lascia perdere lockroot, il problema è nella variabile "i"
    Come ha indicato and80, l'evento onLoad è asincrono e quindi la variabile "i", anche se risulta definita, assume in questo caso l'ultimo valore del ciclo for, cioè 8.

    Dovresti passare il valore "i" in qualche modo.
    Puoi passarlo ad esempio all'oggetto loadVars in modo da recuperarlo all'interno dello stesso.
    Inoltre credo sia meglio definire il loadVars come variabile locale, anteponendo "var"..

    In rosso le parti da modificare/aggiungere.
    codice:
    for (i=1; i<=_root.lavori; i++) {
    	if (i<10) {
    		igm = "00"+i;
    	}
    	igm = _root.percorsolavori+"/"+igm;
    	_root.slide.attachMovie("immagine", "immagine"+i, 1000+i);
    	_root.slide["immagine"+i].attaccaimmagine.loadMovie(igm+".png");
    	_root.slide["immagine"+i].i = i;
    	var lv = new LoadVars();
    	lv.i = i;
    	lv.load(igm+".txt");
    	lv.onLoad = function(success) {
    		if (success) {
    			_root.slide["immagine"+this.i].cli = this.cliente;
    		}
    	};
    }
    Spero funzioni.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.