• User

    Ecco un piccolo esempio.
    In una cartella specifica del nostro computer o del nostro spazio web andiamo ad inserire i banner, che in questo esempio ho chiamato banner1.jpg, banner2.jpg e banner3.jpg.
    Creiamo un nuovo file xml, sempre nella stessa cartella, e al suo interno scriviamo il seguente codice:

    
    <?xml version="1.0" encoding="utf-8"?>
    <banners>
       <banner indirizzo="banner1.jpg" />
       <banner indirizzo="banner2.jpg" />
       <banner indirizzo="banner3.jpg" />
    </banners>
    
    

    Apriamo un nuovo file Flash (ActionScript 2.0), lo salviamo sempre nella stessa cartella con il nome che più ci piace e sullo stage creiamo un MovieClip, magari con dimensioni pari a quella dei banner, al quale diamo nome istanza banner_mc .
    Creiamo anche due bottoni ai quali diamo nome istanza rispettivamente prev_btn e next_btn .
    Nel primo fotogramma del livello contenente i nostri oggetti inseriamo il seguente codice:

    
    var currPosition = 0; //numero progressivo del banner corrente
    var ab:Array = new Array(); //creo un array per i miei banner
    var xml:XML = new XML(); //creo un oggetto XML
    xml.ignoreWhite = true; //ignoro gli spazi vuoti
    
    xml.onLoad = function(ok) //al caricamento del file xml inserisco gli indirizzi dei banner in ab
    {
       if(ok){
          var nodes:Array = this.firstChild.childNodes;
          for(var i=0;i<nodes.length;i++)
          {
            ab.push(nodes*.attributes.indirizzo);
          }
          caricaBanner(); //chiamo la funzione caricaBunner() per mostrare il primo banner
       }
    }
    
    xml.load("banners.xml"); //carico il file banners.xml
    
    function caricaBanner():Void
    {
        banner_mc.loadMovie(ab[currPosition]); //carico nel movieclip banner_mc il banner in posizione currPosition
    }
    
    prev_btn.onRelease = function() //quando prev_btn viene rilasciato
    {
        if(currPosition==0)
           currPosition = ab.length-1; //se sono arrivato all'inizio assegno a currPosition l'ultima posizione dell'array
        else currPosition--; //altrimenti decremento currPosition
        caricaBanner(); //aggiornata currPosition carico il nuovo bunner con la funzione caricaBunner
    }
    
    next_btn.onRelease = function() //quando next_btn viene rilasciato
    {
        if(currPosition==ab.length-1)
           currPosition = 0; //se sono arrivato alla fine assegno a currPosition la prima posizione dell'array
        else currPosition++; //altrimenti incremento currPosition
        caricaBanner(); //aggiornata currPosition carico il nuovo bunner con la funzione caricaBunner
    }
    
    

    Tutto pronto. Non ci rimane che pubblicare e testare!


  • User

    Ti ringrazio del aiuto ma non so il perchè.
    Ma non mi funziona i banner non vanno avanti e indietro.


  • User

    Controlla che tu abbia assegnato ai bottoni i nomi istanza che ho specificato.


  • User

    I pulsanti o dato il nome del istanza che mi hai detto.


  • User

    Ti da qualche errore in particolare? Qualche comportamento anomalo?


  • User

    Mi dicce che c'è un errore.
    function caricaBanner():Void


  • User

    Ti dice anche il tipo di errore? Strano perchè io ho testato il codice e se tu lo hai riprodotto fedelmente non dovrebbero esserci errori.


  • User

    Ma io lo fatto non ho capito il mio errore XD.
    Non e ke mi puoi inviare il file fla e vedo qual e la cosa che sbaglio.


  • User

    h ttp://mr87.altervista.org/banner.fla


  • User

    Funziona XD.


  • Super User

    Grazie mr87, lo scroller funziona bene, maxin prova a rifare tutto seguendo per filo e per segno le istruzioni di mr87 vedrai che funzionera.


  • User

    Ma di nulla Nathan! Maxin perfetto!


  • User

    I miei complimenti!!!
    Però ci sono 2 problemini:
    uno è che vorrei che i banner partissero soli in sequenza
    e con i tasti per andare avanti e indietro

    due
    io dovrei fare circa una cosa 200*100 dove c'è scritto 'caricamento banner' se lo riduco mi riduce pure i banner che ho messo.
    Come devo fare?
    XD


  • User

    Per farli partire in sequenza devi usare un intervallo, cioè un timer che ti richiama una funzione, nel nostro caso caricaBanner ogni tot secondi che decidiamo. Un piccolo accorgimento è il fatto che dobbiamo rilevare che non siamo arrivati all'ultima posizione.
    Comunque con questo codice credo che tutto ti sia più chiaro.

    
    
    function scorri(){
          if(currPosition==ab.length-1) currPosition=-1;
          caricaBanner(++currPosition);
    }
    
    setInterval(scorri, 5000); //richiamo scorri ogni 5 secondi, espressi in millisceondi
    
    
    ```Prova un pò questa soluzione. Per quanto riguarda l'avviso di caricamento, potresti usare un altro movieclip e mostrarlo/nasconderlo in modo opportuno.

  • User

    rapidshare.de/files/41319059/banne.rar.html

    Io ce l'ho fatta ma volevo applicare alcune modifiche
    del tipo se uno clicca sul banner si apre il sito del banner

    poi il movimento dei banner come avviene su
    maxss.it/

    Se ce la fai. XD


  • User

    Puoi inserire nel file xml gli url dei siti, inserirli magari in un altro array e al click del mouse andare all'indirizzo corrispondente, in posizione currPosition per intenderci.
    L'animazione si può ricreare con la classe Tween.


  • User

    Per la classe sono riuscito a trovare questo codice:

    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    this.createEmptyMovieClip("banner_mc", 1);
    with (banner_mc) {
    beginFill(0xFF0000, 100);
    moveTo(0, 0);
    lineTo(100, 0);
    lineTo(100, 100);
    lineTo(0, 100);
    lineTo(0, 0);
    endFill();
    }
    var controllo:Object = new Object();
    controllo = new Tween(banner_mc, "_x", Elastic.easeOut, 200, 50, 10, true);
    controllo.onMotionFinished = function() {
    controllo.yoyo();
    };

    Però si blocca e cambia al centro il banner non so come fare in modo che continui dritto e poi ne venga un altro e faccia lo stesso effetto.
    E cosi con gli altri.

    XD


  • Super User

    Ciao Maxin. 🙂

    I Moderatori hanno già editato una dozzina di tuoi post lasciando nota.
    E' importante che:

    • Inizi i tuoi messaggi con una maiuscola e termini con un punto.
    • Scrivi in italiano corretto.

    Innanzitutto queste sono forme di rispetto per chi legge.
    Poi, se non correggi i tuoi post e li lasci carichi di errori di battitura, diviene difficile comprenderli e quindi aiutarti.


  • User

    XD
    Qualcuno sa darmi una mano.