Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    proprietà di un'istanza duplicata

    Se duplico un movieClip tramite AS, tipo:

    for (n=2; n<=5; n++) {
    duplicateMovieClip("pippo", "pippo"+n, n);
    }

    come faccio all'interno del ciclo for ad effettuare qualche modifica tipo .color, .alpha, ._x e via dicendo riferendomi al nome dell'istanza appena creata?

    Una roba del tipo:

    for (n=2; n<=5; n++) {
    duplicateMovieClip("pippo", "pippo"+n, n);
    "pippo"+n._x = 50; <---
    }

    ovviamente non funziona perchè mi dice che a sinistra dell'operatore devono esserci variabili o proprietà.

    Come faccio?

    Nicola

  2. #2
    mettiamo che pippo (l'originale) sia sulla root:
    codice:
    for (n=2; n<=5; n++) { 
        duplicateMovieClip("pippo", "pippo"+n, n); 
        _root["pippo"+n]._x = 50;  
    }

  3. #3
    Utente di HTML.it L'avatar di ilpiubello
    Registrato dal
    May 2000
    Messaggi
    2,685
    Il modo è quello in rosso:

    for (n=2; n<=5; n++) {
    duplicateMovieClip("pippo", "pippo"+n, n);
    ["pippo"+n] ._x = 50;
    }

    davanti a ["pippo"+n] puoi inserire anche il percorso, dipende da dove hai inserito il ciclo; è importante però, non mettere il punto:

    _root["pippo"+n]._x = 50;
    FaX

  4. #4
    Perfetto... funziona tutto come volevo!
    Ma se per complicare le cose io avessi diciamo 5 movieClip generati da AS e volessi farli muovere random sull'asse X con il seguente codice: (che normalmente funziona benissimo!!!)
    codice:
    	
    	_root["ciao"+q].onEnterFrame = function() {
    		_root["start_x"+q] = _root["ciao"+q]._x;
    		if (i++ == 10) {
    			_root["end_x"+q] = random(dimension)+1;
    			i = 0;
    		}
    		_root["move_x"+q] = (_root["end_x"+q]-_root["start_x"+q])/speed;
    		_root["ciao"+q]._x += _root["move_x"+q];
    	};
    Quando il tutto lo metto all'interno di un ciclo for tipo:
    codice:
    for (q=2; q<=5; q++) {
     // tutta la roba precedente
    }
    non si muove assolutamente niente!
    Eppure se copio 5 volte il codice qui sopra e assegno ogni volta una lettera diversa per ogni funzione per il movimento random funziona tutto correttamente su tutte e 5 le istanze: che rabbia!

    Che devo fare? Lascio perdere



    Nicola

  5. #5
    E' un problema di concetto.
    Flash, in quanto programma, non è altro che un ciclo di istruzioni, che si ripetono continuamente fintantoché non intervengono delle condizioni che ne modificano il percorso.
    Qual'è il "metronomo" che scandisce il tempo di Flash?
    L'evento enterFrame

    La "testina di lettura" di Flash si posiziona sul 1° frame della timeline principale e "legge" tutto quello che gli sta sotto (dall'alto in basso o dal basso in alto a seconda di quanto impostato nelle opzioni di pubblicazione), esegue pure tutte le istruzioni che vi sono scritte (nel frame), e pure tutte quelle associate all'evento enterframe che sono state attivate.
    Quando ha finito, se non ci sono istruzioni diverse, passa al frame successivo e via così...

    Se tra le istruzioni da eseguire (o perché scritte sul frame o perché incluse in un evento enterframe attivo) c'è un ciclo for, questo viene eseguito interamente, prima di passare al frame successivo (e quindi all'eventFrame successivo), per questo motivo il tuo codice non potrà mai funzionare, in quanto (logicamente) il ciclo for è di livello inferiore al ciclo eventFrame.

    Per la soluzione dovrei capire meglio cosa vuoi realizzare ma "concettualmente" la tua routine dovrà essere sviluppata così:
    codice:
    ciclo enterFrame
        ciclo for
    
            ... istruzioni...
    
        fine ciclo for
    fine ciclo enterFrame
    e NON come hai fatto tu dove il ciclo for include l'enterFrame.

    Spero di essermi spiegato

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.