Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Classe Rewind Timeline

  1. #1

    Classe Rewind Timeline

    Ciao, vorrei realizzare una classe "timelineRewind" da poter richiamare ogni qualvolta debba riprodutte la timeline di un qualsiasi MovieClip al contrario.

    come parametri da impostare vorrei metterci:
    • fotogramma di partenza
    • fotogramma di arrivo
    • richiamo di un'azione alla fine del riavvolgimento
    ora la parte più interessante..
    Qualcuno saprebbe darmi qualche idea per realizzarla?

    Una volta realizzata la si potrebbe lasciare in rete per chiunque ne abbia bisogno
    ho prova to a cercarne, man non ne ho trovate..
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  2. #2
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    codice:
    function clipRewind(clip, inizio, fine, vel) {
    	a = inizio;
    	function parti() {
    		clip.gotoAndStop(a);
    		a--;
    		if (a<fine) {
    			clearInterval(intv);
    		}
    	}
    	intv = setInterval(parti, vel);
    }
    clipRewind(_root.prova, 40, 2, 20);
    Ti basta una funzione:

    clip va sostituito con l'istanza del movieclip da riavvolgere

    inizio va sostituito con il numero totali di frame del mc

    fine sarebbe sempre il 1° frame (ho messo 2 nell'esempio perchè nel if uso < di 2, quindi come se fosse 1), comunque se si vuole riavvolgere fino ad un punto intermedio basta dare un valore diverso.

    vel è la velocità della lettura. Poichè l'interval va settato in millesimi, se dovessimo settare una velocità di 10 fps dovremmo mettere 100, e cioè 1000/10.


    Dovrebbe andar bene...



  3. #3
    Ciao, grazie della risposta, ma pensavo a una cosa tipo questa che posto, solo che ora non so come renderla classe..

    codice:
    /*
    al rollover del pulsante via faccio avanzare i mc che voglio fino al fotog che voglio e poi stop dei mc che voglio al rollout
    al rollover del pulsante rit faccio riavvolgere il mc che voglio fino al fotog che voglio e  poi stop dei mc che voglio al rollout
    */
    mc1_mc.stop();
    mc3_mc.stop();
    //--QUESTO E' QUELLO CHE VORREI INSERIRE NELLA CLASSE--
    var esegui:Boolean = false;
    //
    function forward(mc:MovieClip, a:Number, azFine:String, azInt:String) {
    	mc.onEnterFrame = function() {
    		if (this._currentframe == this._totalframes || this._currentframe >= a || _root.esegui == false) {
    			this.onEnterFrame = null;
    			if (this._currentframe == a) {
    				//esegui azione di fine corsa
    				trace("-> Eseguo azione finecorsa >> " + azFine);
    				_root[azFine]();
    			} else {
    				//esegui azione di corsa interrotta
    				trace("-> Eseguo azione corsa interrotta >> " + azInt);
    				_root[azInt]();
    			}
    		} else {
    			this.nextFrame();
    		}
    	};
    }
    function rewind(mc:MovieClip, a:Number, azFine:String, azInt:String) {
    	mc.onEnterFrame = function() {
    		if (this._currentframe == 1 || this._currentframe <= a || _root.esegui == false) {
    			this.onEnterFrame = null;
    			if (this._currentframe == a) {
    				//esegui azione di fine corsa
    				trace("-> Eseguo azione finecorsa >> " + azFine);
    				_root[azFine]();
    			} else {
    				//esegui azione di corsa interrotta
    				trace("-> Eseguo azione corsa interrotta >> " + azInt);
    				_root[azInt]();
    			}
    		} else {
    			this.prevFrame();
    		}
    	};
    }
    //--FINE DI QUELLO CHE VORREI INSERIRE NELLA CLASSE--
    //--Azioni richiamate------
    function azFineVai() {
    	trace("-> Funzione azFineVai eseguita");
    }
    function azIntVai() {
    	trace("-> Funzione azIntVai eseguita");
    }
    function azFineRit() {
    	trace("-> Funzione azFineRit eseguita");
    }
    function azIntRit() {
    	trace("-> Funzione azIntRit eseguita");
    }
    //--Pulsanti---------------
    vai_btn.onRollOver = function() {
    	esegui = true;
    	forward(mc1_mc, 30, "azFineVai", "azIntVai");
    	forward(mc3_mc, 50, null, null);
    	forward(_root, 40, null, null);
    };
    vai_btn.onRollOut = function() {
    	esegui = false;
    };
    //
    rit_btn.onRollOver = function() {
    	esegui = true;
    	rewind(mc1_mc, 10, "azFineRit", "azIntRit");
    	rewind(mc3_mc, 10);
    	rewind(_root, 10);
    };
    rit_btn.onRollOut = function() {
    	esegui = false;
    };
    nel filmato d'esempio ho una timeline principale di 60 fotogrammi come anche quella dei mc
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  4. #4
    Che ne dite così può andare?
    ora come la richiamo?
    codice:
    class Movieclip.timelineControl extends MovieClip {
    	//constructor
    	function timelineControl(){
    		//
    	}
    	// Public Methods +
    	var esegui:Boolean = false;
    //
    	public function playForward(mc:MovieClip, a:Number, azFine:String, azInt:String):Void {
    		if (azFine == undefined) { azFine = null; }
    		if (azInt == undefined) { azInt = null; }
    		mc.onEnterFrame = function() {
    			if (this._currentframe == this._totalframes || this._currentframe >= a || _root.esegui == false) {
    				this.onEnterFrame = null;
    				if (this._currentframe == a) {
    					//esegui azione di fine corsa
    					trace("-> Eseguo azione finecorsa >> " + azFine);
    					_root[azFine]();
    				} else {
    					//esegui azione di corsa interrotta
    					trace("-> Eseguo azione corsa interrotta >> " + azInt);
    					_root[azInt]();
    				}
    			} else {
    				this.nextFrame();
    			}
    		};
    	}
    	public function playRewind(mc:MovieClip, a:Number, azFine:String, azInt:String):Void {
    		if (azFine == undefined) { azFine = null; }
    		if (azInt == undefined) { azInt = null; }
    		mc.onEnterFrame = function() {
    			if (this._currentframe == 1 || this._currentframe <= a || _root.esegui == false) {
    				this.onEnterFrame = null;
    				if (this._currentframe == a) {
    					//esegui azione di fine corsa
    					trace("-> Eseguo azione finecorsa >> " + azFine);
    					_root[azFine]();
    				} else {
    					//esegui azione di corsa interrotta
    					trace("-> Eseguo azione corsa interrotta >> " + azInt);
    					_root[azInt]();
    				}
    			} else {
    				this.prevFrame();
    			}
    		};
    	}
    }
    il file si chiama timelineControl.as
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  5. #5
    ho aggiunto delle descrizioni e delle minime variazioni,
    possibile che non sappia ora come richiamarla?
    qualcuno che ma da un aiutino?
    codice:
    // timelineControlClass.as
    /*timelineControlClass Class
    //
    La classe "timelineControlClass" controlla il movimento della timeline di qualsiasi MovieClip
    avanti, indietro, fino ad un fotogramma predefinito e richiama azioni alla fine e all'interruzione della riproduzione.
    //
    PARAMETRI
    target_mc = MovieClip sul quale eseguire la funzione
    finoA = fotogramma dove deve arrivare la riproduzione della timeline e poi fermarsi
    azFineVai = azione da richiamare una volta completata la riproduzione in avanti
    azIntVai = azione da richiamare quando si interrmpe la riproduzione in avanti
    azFineRit = azione da richiamare una volta completata la riproduzione all'indietro
    azIntRit = azione da richiamare quando si interrmpe la riproduzione all'indietro
    //
    ESEMPIO DI USO
    vai_btn.onRollOver = function() {
    	esegui = true;
    	playForward(target_mc:MovieClip, finoA:Number, azFineVai:String, azIntVai:String):Void;
    };
    rit_btn.onRollOver = function() {
    	esegui = true;
    	playRewind(target_mc:MovieClip, finoA:Number, azFineRit:String, azIntRit:String):Void;
    };
    //
    vai_btn.onRollOut = function() {
    	esegui = false;
    };
    rit_btn.onRollOut = function() {
    	esegui = false;
    FINE ESEMPIO DI USO */
    //
    //
    class timelineControlClass {
    	//constructor
    	function timelineControlClass(){
    		//
    	}
    	// Public Methods
    	var esegui:Boolean = false;
            //
    	public function playForward(mc:MovieClip, a:Number, azFine:String, azInt:String):Void {
    		if (azFine == undefined) { azFine = null; }
    		if (azInt == undefined) { azInt = null; }
    		mc.onEnterFrame = function() {
    			if (this._currentframe == this._totalframes || this._currentframe >= a || _root.esegui == false) {
    				this.onEnterFrame = null;
    				if (this._currentframe == a) {
    					//esegui azione di fine corsa
    					trace("-> Eseguo azione finecorsa >> " + azFine);
    					_root[azFine]();
    				} else {
    					//esegui azione di corsa interrotta
    					trace("-> Eseguo azione corsa interrotta >> " + azInt);
    					_root[azInt]();
    				}
    			} else {
    				this.nextFrame();
    			}
    		};
    	}
    	public function playRewind(mc:MovieClip, a:Number, azFine:String, azInt:String):Void {
    		if (azFine == undefined) { azFine = null; }
    		if (azInt == undefined) { azInt = null; }
    		mc.onEnterFrame = function() {
    			if (this._currentframe == 1 || this._currentframe <= a || _root.esegui == false) {
    				this.onEnterFrame = null;
    				if (this._currentframe == a) {
    					//esegui azione di fine corsa
    					trace("-> Eseguo azione finecorsa >> " + azFine);
    					_root[azFine]();
    				} else {
    					//esegui azione di corsa interrotta
    					trace("-> Eseguo azione corsa interrotta >> " + azInt);
    					_root[azInt]();
    				}
    			} else {
    				this.prevFrame();
    			}
    		};
    	}
    }
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

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.