• User Newbie

    Dubbio su utilizzo Movieclip

    ciao a tutti!

    Ho iniziato da pochi giorni ad usare flash 8 e sicuramente mi mancano ancora alcuni concetti di base. 😞

    Vi espongo in breve il mio problema: ho creato due simboli movieclip della durata di un certo numero di frame e, alla fine di ciascun movieclip, ho inserito uno stop in modo che l'ultimo frame rimanga visibile sulla scena. Ora dovrei inserire questi due movieclip nella scena principale, con l'accortezza che vengano eseguiti uno dopo l'altro (non contemporaneamente). Mi sembra una cosa molto banale, ma non so come fare :arrabbiato:

    Ho inserito i due movieclip creati in 2 livelli distinti della scena principale e per far funzionare il tutto pensavo (speravo) bastasse mettere il primo movieclip nel primo frame del primo layer e il secondo movieclip nel secondo frame del secondo layer. In pratica pensavo che flash "esplodesse" in automatico ciascun frame contenente i movieclip in modo da considerare l'effettiva durata di ognuno di essi...

    Dopo aver fallito questo tentativo, ho inserito il primo movieclip nel primo frame del primo livello, mentre il secondo movieclip l'ho inserito nel secondo livello in corrispondenza del frame in cui termina il primo movieclip (considerando la sua effettiva durata). Così facendo l'esecuzione "in sequenza" dei movieclip funziona, ma mentre il primo movieclip rispetta lo stop() che ho inserito al suo interno (in corrispondenza dell'ultimo frame), il secondo movieclip si esegue in loop (nonostante anche in questo caso io abbia inserito uno stop al suo interno) :?.

    qualcuno sarebbe così gentile da dirmi dove sbaglio? :perfavore:

    P.S. scusate se mi sono dilungato


  • Super User

    Ciao Phate82, benvenuto sul forum GT, non ho capito se i clip filmato debbano essere presenti contemporaneamente sulla scena o uno alla volta, comunque ad esempio potresti fare così, fingiamo che hai due clip filmato, uno con nome istanza rosso e uno con nome istanza nero entrambi sullo stage, mentre rosso parte subito nero sta fermo perchè c'è uno stop() sul primo frame della sua linea temporale, vogliamo che quando rosso che è composto di 20 frame a concluso la sua animazione, quindi quando la testina di lettura si trova sul frame 20 parta il clip filmato nero, ebbene devi mettere sul primo frame della time line principale questo

    
    onEnterFrame = function(){
    if(rosso._currentframe==20){
        nero.play()}
    }
    
    

  • User Newbie

    ciao Nhatan! ti ringrazio per il benvenuto e per la risposta! 🙂

    sicuramente la tua soluzione è molto vicina a quello che serve a me, ma forse non mi sono spiegato bene..oppure non riesco a fare quello che mi hai detto :). Provo ad essere più esplicito:

    • ho un movieclip "rosso" che occupa, nella sua personale linea temporale, 130 frame
    • ho un movieclip "nero" che occupa, nella sua personale linea temporale, 168 frame
    • nell'ultimo frame di entrambi i movieclip ho inserito uno stop perchè non voglio che vengano eseguiti ciclicamente, ma che rimangano stoppati sull'ultimo frame.

    Ora..quello che vorrei ottenere sulla scena è:

    • parte il movieclip rosso che viene eseguito fino alla fine, rimanendo poi stoppato sull'ultimo frame
    • subito dopo parte il movieclip nero che viene eseguito fino alla fine, rimanendo poi stoppato sull'ultimo frame

    Alla fine delle animazioni vorrei avere visualizzati sulla scena gli ultimi frame di entrambi i movieclip.
    La tua soluzione sembra proprio fare al caso mio, ma sicuramente sbaglio qualcosa nel disporre i due movieclip sulla timeline principale :arrabbiato: ...li ho disposti su 2 layer distinti della timeline principale, ma non riesco a capire in quali frame inserirli per avere l'esecuzione in sequenza :bho:

    P.S. dimenticavo di dire che provando la tua soluzione il primo movieclip viene eseguito correttamente, mentre il secondo non si avvia. Se mi confermi che la soluzione è quella che hai detto tu, allora sto sbagliando qualcosa 🙂


  • User Newbie

    ehmmm..chiedo scusa..sono un pirla! :eheh:
    non avevo dato il nome alle istanze dei movieclip che ho utilizzato...:D

    ora funziona tutto e la timeline principale è bella ordinata ;)...rimane solo un piccolo problema: il secondo movieclip viene eseguito ciclicamente nonostante abbia inserito uno stop sull'ultimo frame (come ho fatto anche con il primo movieclip che infatti si ferma regolarmente)...sai illuminarmi anche su questa cosa?

    grazie ancora! :bravo:


  • Super User

    Scusa, hai proprio ragione non ci avevo fatto caso, per risolvere aggiungi un fotogramma chiave al clip filmato rosso, lo stop() lo elimini dal frame 20 e lo metti sul 21, infine il codice diventa

    
    rosso.onEnterFrame = function(){
    if(rosso._currentframe==20){
        nero.play()}
    if(rosso._currentframe==21){
        delete this.onEnterFrame
        }
    }
    
    

    così eliminiamo l'EnterFrame e liberiamo la memoria.


  • User Newbie

    ciao!

    avevo risolto (e non so bene il perchè 🙂 ) scrivendo:

    onEnterFrame = function(){
    if(rosso._currentframe==19){
        nero.play()}
    }
    ```però, visto che mi fido di più di quello che suggerisci tu, ho appena usato il tuo nuovo codice...funziona! :D
    
    grazie ancora per l'aiuto!

  • Super User

    Potresti lasciare anche come hai fatto tu, perchè il codice tradotto vuol dire, così capisci perchè funziona come lo hai modificato tu, quando sei (inteso come testina di riproduzione) sul frame 19 del clip filmato rosso fai partire il clip filmato nero, quindi quando va al 20 trova lo stop() e si ferma, nel mio primo codice cosa c'era di sbagliato? sicuramente lo avrai già capito, cioè il frame dove doveva eseguire il comando era il 20, siccome la testina si fermava proprio al 20 andava in loop.
    Comunque è meglio quando si crea una funzione onEnterFrame, eliminarla una volta che non serve più, perche viene letta continuamente è può provocare sovracarico della ram con conseguente rallentamenti.


  • User Newbie

    Visto il prezioso aiuto che mi è stato fornito l'ultima volta e visto che il nuovo problema riguarda sempre i movieclip, provo a riaprire la discussione.

    ipotizziamo nuovamente di avere 2 movieclip, "rosso" e "nero", disposti su 2 livelli diversi della timeline..entrambi nel primo frame del rispettivo livello. Sia "rosso" che "nero" hanno uno stop() al primo ed all'ultimo frame delle rispettive timeline.
    Quello che voglio fare è semplicemente creare del bottoni di navigazione che mi permettano di andare da un movieclip all'altro.

    Immaginiamo che un qualche evento abbia provocato il play() del movieclip "rosso"...il codice che ho scritto per passare al movieclip "nero" tramite la pressione del bottone avanti_btn è:

    avanti_btn.onRelease = function(){
    rosso.unloadMovie();
    nero.play();
    }
    ```ed in effetti la cosa sembra funzionare. Il problema è ritornare indietro al movieclip "rosso". Infatti se per il bottone indietro_btn scrivo
    
    

    indietro_btn.onRelease = function(){
    nero.unloadMovie();
    rosso.play();
    }

    
    

    avanti_btn.onRelease = function(){
    rosso.unloadMovie();
    nero.gotoAndPlay(2);
    }

    
    qualcuno mi più illuminare? :D

  • User Newbie

    Risolto! 😄
    ho modificato il codice dei 2 bottoni come segue:

    avanti_btn.onRelease = function(){
    rosso.gotoAndStop(1);
    nero.play();
    }
    
    indietro_btn.onRelease = function(){
    nero.gotoAndStop(1);
    rosso.play();
    }