- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- [Risolto] Fade in out Movieclip [AS2]
-
[Risolto] Fade in out Movieclip [AS2]
Salve,
Ho un movie clip che appare e sparisce in vari punti sullo schermo in modo casuale; utilizzando il metodo **attachMovie **e math.random.
Il problema è che volevo fare in modo che:
- apparisca con un fade in,
- resti li per un po',
- sparisca con un fade out..... e cosi via...Per il fade ho usato queste due funzioni, richiamate tramite setInterval() :
fadein = function (clip, passo, limite) { clip._alpha += passo; test=1; if ((passo>0 && clip._alpha>=limite)) { clip._alpha = limite; clearInterval(intervallo); test=0; } }; fadeout = function (clip, passo, limite) { clip._alpha -= passo; if ((clip._alpha<=limite)) { clip._alpha = limite; clearInterval(intervallo3); test=0; } }; ```Come faccio a sincronizzare il momento in cui fare iniziare il fade in, la pausa e il fade out ? (Da notare tutto è fatto in AS su un solo frame) Spero di essere stato chiaro nella mia spiegazione. :)
-
Ciao
Personalmente userei onEnterFrame per i fade e setInterval per attachMovie.
In questo modo hai il setInterval che ogni tot secondi attacca una clip che parte onEnterFrame e fa fadeIn. Quando ad esempio fermi l' onENterFrame del fadeIn, usi un altro intervallo che chiama la funzione fadeout che a sua volta con EnterFrame esegue il fadeout della clip e a fine fadeout ferma OnEnterFrame e la rimuove.
-
Grazie Flep per l'aiuto,
ma non ho capito bene i passaggi potresti essere un po' più preciso?
questo è il mio codice:stop(); function randRange(min:Number, max:Number):Number { var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min; return randomNum; } function Show() { alphaStart= 10; var x_pos:Number = randRange(0, 400); var y_pos:Number = randRange(0, 300); passo=5; _root.attachMovie("oggetto_id", "oggetto", 1, {_x:x_pos, _y:y_pos, _alpha:alphaStart}); _root.oggetto.onEnterFrame = function() { oggetto._alpha += passo; if (clip._alpha>=100) { clip._alpha = 100; _root.oggetto.onEnterFrame=null; } } } Show(); setInterval(Show, 8000); ```Come faccio a richiamare il **fadeout** **solo alla fine degli 8000 millesimi** di secondi del set interval? Cioè in modo che ci sia un fade-in, un tempo in cui il movie clip è fermo e solo alla fine va in fade-out :? (sincronizzando il tutto per le iterazioni successive)?
-
Prova ad aggiungere una funzione del tipo:
function callShow()
{
Show();
}poi, nella funzione Show, dopo la riga
_root.oggetto.onEnterFrame=null;
metti
setInterval(callShow, 8000);
-
Ho prvovata ad inserire la funzione e il setinterval per il fade out..... Funziona......ma da dei problemi:
- La prima volta che viene copiato l'oggetto non esegue il fade out (dopo di che tutto ok).
- Dopo poco tempo il **filmato inizia a degenerare...**a volte i Fade sono più lenti altre volte più veloci, a volte tra un'istanza e un'altra ci sono tempi morti (schermo bianco); Il tempo tra il Fade-in e il Fade-out è uguale a zero..... a lungo andare l'oggetto inizia a lampeggiare durante il fade-in....:(```
stop();
// -----------------------------------------------
function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min;
return randomNum;
}
// -----------------------------------------------function callShow()
{
ShowOut();
}function ShowIn() {
fade= 10;
_global.x_pos = randRange(0, 810);
_global.y_pos = randRange(0, 300);
_global.passo=5;_root.attachMovie("petra_id", "petra", 1, {_x:_global.x_pos, _y:_global.y_pos, _alpha:fade}); _root.onEnterFrame = function() { _root.oggetto._alpha += passo; if (_root.oggetto._alpha>=100) { oggetto._alpha = 100; intervallo_out=setInterval(callShow, 8000); _root.onEnterFrame=null; } }
}
function ShowOut() {
fade= 100; passo=5; removeMovieClip("petra"); _root.attachMovie("oggetto_id", "oggetto", 1, {_x:_global.x_pos, _y:_global.y_pos, _alpha:fade}); _root.petra.onEnterFrame = function() { _root.oggetto._alpha -= passo; if ((oggetto._alpha<=0)) { oggetto._alpha = 0; _root.oggetto.onEnterFrame=null; clearInterval(intervallo_out); removeMovieClip("oggetto"); } }
}
ShowIn();
setInterval(ShowIn, 8000);
-
Hai 2 intervalli che girano.
Usane solo uno.
Parte il fadeIn che attacca l' immagine, a fine fadeIn chiami il setInterval che fa fadeOut.
Nel fadeout annulli il setInterval
Alla fine del fadeOut chiami subito fadein ancora e via dicendo
-
Grazie Flep,
Adesso funziona!