Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [AS2] Slideshow con Transition Tween

    Ciao Ragazzi,
    sto cercando di fare uno slideshow utilizzando le proprietà di mx.transitions.Tween. In particolare vorrei funzionasse così: carico i dati da un file XML e faccio il parsing, creo dinamicamente i miei contanier e applico alle foto in entrata un effetto di movimento tramite:
    codice:
    mx.transitions.easing.Regular.easeOut
    accompagnato da un effetto di sfocatura (blur):
    codice:
    new flash.filters.BlurFilter
    fino a qui ci sono ma quando entra la foto successiva, però, vorrei fare in modo che quella precedente non venga semplicemente "coperta" ma scompaia con i medesimi effetti di entrata, prima che l'altra arrivi al suo posto. Io ho scritto:
    codice:
    function createLoader(i,data,num) {
        //richiamo la funzione x farlo andare via
        basedata=data
        //trace("data"+data[num].path)
        ritorna()
        thisLoader=eval("container_mc.loader"+i+"_mc");
        thisLoader._alpha=100;
        thisLoader.loadMovie(data[num].path);
        watcher_mc.onEnterFrame=function () {
            var picLoaded = thisLoader.getBytesLoaded();
            var picBytes = thisLoader.getBytesTotal();
            if (isNaN(picBytes) || picBytes < 4) {
                return;
            }
            if (picLoaded / picBytes >= 1) {
                swapPlace("container_mc.loader2_mc",1);
    			starter = - container_mc._x;
    			playerXT = new mx.transitions.Tween(thisLoader, "_x", mx.transitions.easing.Regular.easeOut, starter, 149 - container_mc._x, 1, true);
                playerBT = new mx.transitions.Tween(thisLoader, "blur", mx.transitions.easing.Regular.easeOut, 80, 0, 1, true);
    			playerBT.onMotionChanged = function ()
    			{
                    thisLoader.filters = [new flash.filters.BlurFilter(thisLoader.blur, 0, 1)];
                };
    			timerInterval = setInterval(imageGen,_global.numPause,data);
                delete this.onEnterFrame;
    			var oldfoto_mc = Root.containermc.fotosmc["container_mc.loader" + i - 2) + "_mc"];
                oldfotoXT = new mx.transitions.Tween(oldfoto_mc, "_x", mx.transitions.easing.Regular.easeOut, starter, 149 - container_mc._x, 1, true);
                oldfotoBT = new mx.transitions.Tween(oldfoto_mc, "blur", mx.transitions.easing.Regular.easeOut, oldfoto_mc.blur, 20, 1, true);
                oldfotoBT.onMotionChanged = function ()
                {
                    oldfoto_mc.filters = [new flash.filters.BlurFilter(oldfoto_mc.blur, 0, 1)];
                };
                oldfotoBT.onMotionFinished = function ()
                {
                    oldfoto_mc.removeMovieClip();
                };
                scendi()
            }
        }
    }
    Logicamente non funziona e mi rendo conto che, essendo abbastanza inesperto in AS, il codice potrebbe essere una mezza papocchia in più di qualche punto ma se qualcuno più esperto di me riesce a darmi una dritta ve ne sarei grato davvero.

    Un grazie anticipato a tutti.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    65
    la soluzione c'è... non sai quanto ho sbattuto anch'io su sta cosa...

    Metti tutte le tue immagini in un array poi usa un setInterval che ti lancia una funzione ad intervalli e passi come parametro tutto l'array.
    Nella tua funzione metti una serie di controlli con una variabile booleana o numerica, creando un ciclo con l'operatore ternario per tutti gli elementi dell'array.

    count =0;
    operatore = 1;

    function transition(param:MovieClip){
    if (count <=0){
    operatore = (operatore == 0) ? 1 : 0;
    count = 0;
    }
    operatore1 = (operatore == 1) ? 0 : 1;
    // fai qualcosa sul mio array usando i parametri
    count ++;
    }

    function chiamaTransition(dilay:Number){
    ritardo = 1000*dilay;

    setInterval(transition,ritardo,myArray);
    }

    // applica le transizioni ogni 2 secondi
    chiamaTansition(2);

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.