Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Sequenza immagini esterne in dissolvenza

    Devo realizzare una sequenza di immagini che appaiono e scompaiono in dissolvenza. Queste immagini vengono prelevate da una cartella ed il codice fino ad ora è:

    codice:
    i = 1;
    vuoto._alpha = 100;
    vuoto.loadMovie(i+".jpg");
    a = setInterval(preload, 200);
    function preload() {
    	var car = vuoto.getBytesLoaded();
    	var tot = vuoto.getBytesTotal();
    	var per = Math.round((car/tot)*100);
    	if (car>=tot && tot>0 && vuoto._url != _root._url) {
    		clearInterval(a);
    	}
    }
    vuoto2._alpha = 0;
    vuoto2.loadMovie((i+1)+".jpg");
    a2 = setInterval(preload2, 200);
    function preload2() {
    	var car2 = vuoto2.getBytesLoaded();
    	var tot2 = vuoto2.getBytesTotal();
    	var per2 = Math.round((car2/tot2)*100);
    	if (car2>=tot2 && tot2>0 && vuoto2._url != _root._url) {
    		clearInterval(a2);
    	}
    }
    b = setInterval(dissolvi, 5000);
    function dissolvi() {
    	vuoto.onEnterFrame = function() {
    		this._alpha -= 5;
    		vuoto2._alpha += 5;
    		clearInterval(b);
    	};
    }
    In questo modo carico le prime due foto su due movieclip diversi, e poi gradualmente faccio sparire la prima e comparire la seconda. Tutto funziona, ma solo sulle prime due foto...
    Come faccio a rendere continuo il ciclo?
    Perdonate ma sono alle prime armi con i "setInterval" e sto cercando di apprenderli a pieno...

  2. #2

  3. #3
    prova così

    codice:
        function dissolvi() {
            if (clipFoto1==undefined){
                clipFoto1="vuoto"
                clipFoto2="vuoto2"
            }
    
        	vuoto.onEnterFrame = function() {
        		eval(clipFoto1)._alpha -= 5;
        		eval(clipFoto2)._alpha += 5;
                    if (eval(clipFoto1)._alpha<=0){
                       delete this.onEnterFrame
                       clipFotoTemp=clipFoto1
                       clipFoto1=clipFoto2
                       clipFoto2=clipFotoTemp
                    }
        	};
        }

  4. #4
    Grazie mille Stan, funziona ma mi sono spiegato male io e faccio ammenda...
    Questo script in effetti fa si che l'effetto sia ciclico, a me servirebbe caricare l'immagine 1, poi 2, poi 3 e così via...

  5. #5
    Devi cambiare il nome della clip che sta per apparire con una nuova foto. In teoria basta che su vuoto carichi un'altra foto.

  6. #6
    Quindi una cosa del genere?

    codice:
    vuoto.onEnterFrame = function() {
    		eval(clipFoto1)._alpha -= 5;
    		eval(clipFoto2)._alpha += 5;
    		if (eval(clipFoto1)._alpha<=0) {
    			delete this.onEnterFrame;
    			clipFotoTemp = clipFoto1;
    			clipFoto1 = clipFoto2;
    			clipFoto2 = clipFotoTemp;
    			vuoto.loadMovie((i+2)+".jpg", 1);

  7. #7

  8. #8
    In quel modo non ce la fai, la funzione "dissolvi" dovrebbe essere lanciata solo quando hai caricato una foto, e non con un interval più alto supponendo che la foto sia caricata.
    Dovresti caricare le foto una volta su vuoto2, e una volta su vuoto, alternandole, e facendo salire e scendere l'alfa della foto che sta sopra.



    Ho il codice pronto che fa quello vuoi più o meno anche se in modo diverso, ma se non hai un attimo di pratica ci fai poco


    Questo codice sta in una timeline (veniva fatto all'evento press di alcuni bottoni).
    Nella timeline c'è un clip chiamato "Big" con dentro altri due clip chiamati "foto1" e "Foto2"

    LoadBack un clip che fa da loading puoi anche segare quelle parti.
    codice:
    						big[clipFoto].foto.loadMovie("backstage/"+this.foto+".jpg")	
    						loadBack._visible=1
    						loadBack.gotoAndStop(1)
    						loadback._xscale=0
    						big[clipFoto].onEnterFrame= function(){						
    							loadback._xscale=this.foto.getBytesLoaded()/this.foto.getBytesTotal()*100
    							if (this.foto.getBytesLoaded()==this.foto.getBytesTotal() && this.foto.getBytesLoaded()>5000){
    								this._visible=1
    								if (this._alpha<99){
    									this._alpha+=5
    								}else{
    									this._alpha=99
    									loadback.gotoAndPlay(2)									
    									delete this.onEnterFrame
    									big[clipFoto].swapDepths(big[ClipFotoS])
    									big[ClipFotoS]._visible=0
    									big[ClipFotoS]._alpha=0
    									if (clipFoto=="foto2"){
    										clipFoto="foto1"
    										clipFotoS="foto2"
    									}else{
    										clipFoto="foto2"
    										clipFotoS="foto1"
    									}	
    
    								}

  9. #9
    Grazie mille Stan!
    Vedrò cosa posso fare!

  10. #10
    Per caricare delle img da una cartellla e che cambino ogni Tot secondi puoi fare una cosa di questo tipo, caricando le immagini dall'esterno.


    Allora.

    crei 2 movie clip vuoti li istanzi clipA e clipB
    li posizioni sullo stage nelle stesse coordinate.

    Poi i 2 movie clip li inserisci entrambi in un Movieclip che li conterrà

    Il movieclip contenitore lo istanzi foto

    Selezioni il movieclip foto F9 pannello azioni e gli applichi questo codice

    codice:
    onClipEvent (load) {
    	clip = "B";
    	function swappa() {
    		car = laClip1.getBytesLoaded();
    		tot = laClip1.getBytesTotal();
    		perc = Math.round((car/tot)*100);
    		_parent.loadimage = perc+"%";
    		if (car>1024 && car == tot) {
    			if (laClip1._alpha<90) {
    				laClip1._alpha += 2;
    				laClip2._alpha -= 2;
    			} else {
    				laClip1._alpha = 100;
    				laClip2._alpha = 0;
    				clearInterval(e);
    			}
    		}
    	}
    	// swappa
    	function playSlide() {
    		if (clip == "A") {
    			laClip1 = clipA;
    			laClip2 = clipB;
    			clip = "B";
    		} else {
    			laClip1 = clipB;
    			laClip2 = clipA;
    			clip = "A";
    		}
    		laClip1._alpha = 0;
    		laClip2._alpha = 100;
    		trace(laClip1);
    		trace(laClip2);
    		laClip1.loadMovie(+_root.partenza+".jpg", "test_mc");
    		e = setInterval(swappa, 20);
    	}
    }
    Poi timeline principale selezioni il frame pannello azioni
    copie incolli il codice di seguito
    codice:
    NumTotale = 4;
    // totale dei file che hai
    OgniQuantiSecondi = 6;
    // tempo attesa prima cambio immagine
    partenza = 0;
    function carica() {
    	partenza = partenza<NumTotale ? partenza+1 : 1;
    	foto.playSlide();
    }
    foto.clipB.loadMovie("4.jpg");//metti l'ultima foto per evitare buchi
    setInterval(this, "carica", OgniQuantiSecondi*1000);
    Qui puoi cambiare
    NumTotale ->sarà il num di immagini che hai
    OgniQuantiSecondi --> tempo per il cambio

    Il gioco è fatto ora non devi fare altro che creare le tue jpg
    che dovranno chiamarsi in modo sequenziale per es.

    1.jpg
    2.jpg
    3.jpg
    4.jpg

    Posizionare le jpg nella stessa cartella di dove si trova swf appena creato lanciare swf e avrai il tuo file

    Ovviamente la prima foto apparirà senza effetto tute le altre invece avranno fade in e outinoltre volendo è possibile anche creare un file di testo da cui andare a caricare NumTotale in modo che non avrai bisogno neanche di riaprire il fla nel momento in cui vuoi aggiungere o togliere una foto,al momento devi cambiare la cosa nel fla.

    Consulenza aziendale a 360° http://www.gruppodg.it http://www.gruppodg.it/3d
    Realizzazione siti internet, Siti Flash, Ricerca Location per bar negozi , esercizi commerciali, sviluppo pratiche e allestimento

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.