Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di c3k
    Registrato dal
    Jan 2002
    Messaggi
    42

    "this" in gestore di evento di LoadVars

    ho un oggetto LoadVars in un mc (pippo)
    pippo è caricato nel movie principale


    new_lv = new LoadVars();

    vado a definire la funzione onLoad:
    codice:
    new_lv.onLoad = function(success){
    	if (success){
    		for(i=0,i<5,i++){
    			//duplico un mc (pluto) contenuto in pippo
    			//aggiusto la coordinata y
    		}
    	}
    }
    per fare queste operazioni solitamente uso il metodo di trattare un livello come array per accedere ai mc contenuti cioè:
    codice:
    for(i=0,i<5,i++){
    	pluto.duplicateMovieClip("pluto"+i, this.getNextHighestDepth());
    	this["pluto"+i]._x = 10 * i;
    }
    però usando this all'interno del gestore di evento di LoadVars raggiungo l'oggetto stesso e non i mc...

    per ora ad aggirare il problema usando _parent.pippo al posto di this (scendo e risalgo di un livello) ma mi chiedevo se esistessero altri metodi per accedere ai mc usando "nomi dinamici" oltre a quello che conosco,
    potete aiutarmi?

  2. #2
    Puoi usare _root o altri percorsi...comunque il concetto di _parent.pippo è giusto ; un altro metodo per accere ai movieclip dinamicamente è l'uso di eval, ad esempio

    eval("pluto"+i)

    Poi c'è with ("erede" di TellTarget)

    with("pluto"+i)

    Però il "problema percorsi" si propone in tutti i casi, insomma devi quasi sempre indicare tu il percorso giusto

  3. #3
    Utente di HTML.it L'avatar di c3k
    Registrato dal
    Jan 2002
    Messaggi
    42
    eval lo posso usare solo alla destra dell'uguale e in questo caso non mi aiuta...

    non sono abituato a usare with, mi sembrava una buona idea, ma dopo un paio di tentativi ho abbandonato (leggendo la guida ho capito che per natura non ha un riferimento certo al 100% e i primi risultati che ho avuto mi hanno scoraggiato...)

    se mi dici che l'approccio _parent.nome non è troppo azzardato (in chiave di compatibilità, futura e passata) mi sa che continuerò ad usare quello...

  4. #4
    Originariamente inviato da c3k
    eval lo posso usare solo alla destra dell'uguale e in questo caso non mi aiuta...

    non sono abituato a usare with, mi sembrava una buona idea, ma dopo un paio di tentativi ho abbandonato (leggendo la guida ho capito che per natura non ha un riferimento certo al 100% e i primi risultati che ho avuto mi hanno scoraggiato...)

    se mi dici che l'approccio _parent.nome non è troppo azzardato (in chiave di compatibilità, futura e passata) mi sa che continuerò ad usare quello...
    Cosa vuol dire che puoi usarlo solo a destra? eval puoi benissimo usarlo al posto del this["pluto"+i]... :master:

    No, il _parent.nome non è "azzardato", anzi è giusto come concetto, diciamo che i due metodi più usati con la sintassi del punto per riferisci a movieclip dinamicamente sono appunto

    this["nome"+variabile]._x = 200
    (dove al posto di this ci può essere un altro percorso)

    oppure

    eval("nome"+variabile)._x = 200

    with può convenire usarlo soprattutto quando hai tante azioni da associare allo stesso movieclip

    Il _parent non credo lo leveranno praticamente mai , quindi sulla compatibilità vai tranquillo

  5. #5
    Utente di HTML.it L'avatar di c3k
    Registrato dal
    Jan 2002
    Messaggi
    42
    grazie 1000!!!

    invece di:
    codice:
    eval("nome"+variabile)._x = 200
    io avevo fatto:
    codice:
    eval("nome"+variabile._x) = 200
    con conseguente:
    codice:
    **Errore** Simbolo=blabla, livello=Livello 1, fotogramma=1:Linea 14:
    Il lato sinistro dell'operatore di assegnazione deve essere una
    variabile o una proprietà.

    piccola differenza che effettivamente conta molto per il player...

    riassumendo,
    il mio:
    codice:
    for(i=0,i<5,i++){
    	_parent.pippo.pluto.duplicateMovieClip("pluto"+i, _parent.pippo.getNextHighestDepth());
    	_parent.pippo["pluto"+i]._x = 10 * i;
    }
    con eval è diventato:
    codice:
    for(i=0,i<5,i++){
    	_parent.pippo.pluto.duplicateMovieClip("pluto"+i, pluto._parent.getNextHighestDepth()); //***
    	eval(pluto"+i)._x = 10 * i;
    }
    *** qui rimane per forza il giochetto con _parent...(o no?)


    in ogni modo adotterò questo metodo che mi è consentito anche quando non conosco il nome del mc!

    grazie ancora

  6. #6
    Sì sì in quel punto il _parent.pippo etc rimane

    Ciao, alla prossima

  7. #7
    Utente di HTML.it L'avatar di c3k
    Registrato dal
    Jan 2002
    Messaggi
    42
    soluzione definitiva (spero!) adottata:

    codice:
    new_lv.onLoad = function(success){
    	if (success){
    		funzioneesterna()
    	}
    }
    
    function funzioneesterna(){
    	//qui faccio quello che mi pare!!!
    	//(con this finalmente riferito al mc contenente il codice!!!)
    }
    :maLOL:

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.