Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774

    problemi con reverse dei movie clip

    salve a tutti..
    sto realizzando un sito in flash ed avrei qualche problema a realizzare questa cosa...
    in pratica il sito è diviso in pagine, ciascuna delle quali è rappresentata da un movie clip
    che si presenta comparendo con un certo tipo di animazione.
    quello che vorrei è che quando l'utente clicca su un link per cambiare pagina il movie precedentemente caricato sparisse in "retromarcia", ovvero ripercorrendo a ritroso la sua timeline. .. e successivamente viene caricato il nuovo movie.
    (per la retromarcia tutto ok.. ho inserito un nuovo metodo indietro() nella classe movieClip che fa per me il reverse del clip).

    quindi le azioni date ai pulsanti sono queste:
    1) riavvolgi il clip precedente
    2) avvia quello selezionato


    i miei problemi a questo punto sono 2:
    1- sapere qual'è il clip attualmente visualizzato in modo da applicargli il reverse

    2- sapere quando un clip ha finito di fare il suo reverse in modo da far partire quello nuovo.
    in questo caso infatti non si fa in tempo a vedere il reverse del primo clip che già è partito il secondo...


    qualcuno sa darmi qualche dritta?
    per il primo problema pensavo che si potrebbe mettere una variabile sulla root che conterrà il nome del clip attualmente visualizzato..
    questa variabile sarà settata ogni volta dal botone premuto con il nome del clip che esso richiama...

    aspetto le vostre risposte
    (scusate la confusione :P)
    grazie
    citrus

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    molto dipende da come è impostata la tua funzione "indietro", se ad esempio avesse un blocco che dice al clip "Appena arrivi al frame 1 fermati", basterebbe creare una funzione ridefinibile che venga richiamata in quel momento... per capirci

    var _level0['funzione'] = function(){};

    MovieClip.prototype.reverse = function(){
    this.onEnterFrame = function(){
    if(this._currentframe > 1){
    this.prevFrame();
    } else {
    delete this.onEnterFrame;
    _level0['funzione']();
    }
    }
    }

    clip.onRelease = function(){
    var _level0['funzione'] = function(){
    trace("funziona");
    };
    this.reverse();
    }

  3. #3
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    ti ringrazio ma avevo detto che la funzione per il reverse ce l'ho gia e funziona bene...

    il mio problema è capire (tramite lo script inserito nei pulsanti) quando un clip ha finito di fare il suo reverse per poter così avviare il clip successivo..

    in pseudo codice sarebbe una cosa del tipo:
    codice:
    - rileva il clip attualmente visualizzato
    - lancia il suo reverse
    - quando il suo reverse è concluso lancia il nuovo clip
    l'altra domanda invece era appunto "come capire qual'è il clip attualmente visualizzato per poter richiamare su di esso il reverse?"

    grazie
    citrus

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da citrus
    ti ringrazio ma avevo detto che la funzione per il reverse ce l'ho gia e funziona bene...
    quello l'ho capito, ecco perchè ti ho scritto

    molto dipende da come è impostata la tua funzione "indietro", se ad esempio avesse un blocco che dice al clip "Appena arrivi al frame 1 fermati", basterebbe creare una funzione ridefinibile che venga richiamata in quel momento...
    anche per la seconda questione dipende da come è strutturata la funzione... basterebbe modificarla un pochino per ottenere le cose che chiedi

  5. #5
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    hai ragione scusa :P
    ti posto la funzione di reverse che ho inserito nel primo frame della timeline del mio filmato (che è identica alla tua);

    codice:
    MovieClip.prototype.reverse = function(){ 
    	this.onEnterFrame = function(){ 
    		if(this._currentframe > 0){
    			this.prevFrame();
    		}else{
    			delete this.onEnterFrame;
    		}
    	}
    }
    questa invece è la funzione che ho inserito in uno dei pulsanti per fare una prova...

    codice:
    on (press) {
    	_root.mc1.reverse();
    	_root.gotoAndPlay("mc2");
    }
    come si può benissimo capire il reverse del clip 1 non viene neppure eseguito perchè viene subito sovrascritto dal clip 2.
    quindi il problema è: come faccio a lanciare il secondo clip solo quando il reverse del primo è terminato?
    potrei impostare un setInterval per farlo attendere qualche secondo ma non mi pare una gran soluzione...

    potrei settare da qualche parte una variabile booleana "finisch" che viene impostata a true dalla funzione reverse() stessa prima di uscire...
    ma poi per leggerla?
    potrei controllarla con un
    while(!finish){ ... aspetta ... }

    ma non so come fare.. così non va...

    ti ringrazio molto per l'aiuto
    citrus

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    non c'è bisogno di stare a scervellarsi in cerca di alchimie particolari, ce l'hai già la soluzione, sta nel blocco di codice

    else{
    delete this.onEnterFrame;
    }

    la cosa dovresti facilmente ottenerla in questo modo
    codice:
    MovieClip.prototype.reverse = function(){ 
    	this.onEnterFrame = function(){ 
    		if(this._currentframe > 0){
    			this.prevFrame();
    		}else{
    			delete this.onEnterFrame;
    			_root.gotoAndPlay(_root['altro']); // qui fai l'azione di "rimando" utilizzando il nome del clip salvato in precedenza
    		}
    	}
    }
    
    // sul pulsante:
    on (press) {
    	_root.mc1.reverse();
    	_root['attuale'] = "mc1"; // questa è la variabile che determina il clip su cui stai attualmente
    	_root['altro'] = "mc2"; // questa invece determina il clip che effettuerà la prossima animazione
    }

  7. #7
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    grandissimo funziona!
    rimane solo un problema...
    quando richiamo il reverse sul clip devo poterlo richiamare utilizzando una varibile e la cosa non funziona...
    mi spiego meglio:

    questo è il richiamo di funzione classico
    codice:
    _root.mc1.reverse();
    però io il nome del movie "mc1" ce l'ho memorizzato nella varibile _root['attuale'] perchè non posso sapere a prescindere quale clip è attualmente visualizzato...
    quindi la chiamata dovrebbe essere:

    codice:
    _root._root['attuale'].reverse();
    ma ovviamente non funziona la sintassi ...
    come posso fare?

    denghiuuuuu

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    _root[_root['attuale']].reverse();

  9. #9
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    ho risolto con una funzione semplicissima:

    codice:
    _global.clip="home";
    
    _global.link = function(param){	
    	eval("_root."+_global.clip).reverse();
    	_global.clip=param;	
    }
    che richiamo da ogni bottone passandogli il nome del clip associato

    codice:
    _global.link("chi_sono");
    et voilà!
    funziona perfettamente!

    grazie mille!!!!

  10. #10
    scusami CITRUS dove posso trovare la funzione di reverse?

    grazie

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.