Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22
  1. #11
    Questo è come farei io, ti posto il codice della Document Class.
    Se poi vuoi rendere ancora più modulare il tutto, puoi mettere i nomi degli swf da caricare in un XML esterno che ti carichi all'inizio dell'applicazione ... così puoi cambiare i nomi e il numero di banner da caricare esternamente senza aprire Flash.
    Cmq vabbè, per ora ti basta editare gli elementi dell'array totalMc.

    Codice PHP:
    package
    {
        
    import flash.display.*;
        
    import flash.events.*;
        
    import flash.net.*;
        
        public class 
    Main extends MovieClip
        
    {
            private var 
    loader:Loader;
            private var 
    mc:MovieClip;
            
            
    // questo è il mio array originale dove metterò dentro tutti i nomi dei file swf 
            // da caricare. Ora cene sono 4, ma ovviamente possono essere quanti tene pare.
            
    private var totalMc:Array=new Array("primo""secondo""terzo""quarto");
            
            
    // questo invece sarà il mio array copia, che userò per interagire con il random
            
    private var currentMc:Array;
            
            public function 
    Main()
            {
                
    init();
            }
            private function 
    init():void
            
    {
                
    // creo un duplicato di totalMc sul quale posso interagire
                // senza modificare l'array originale
                
    currentMc=totalMc.slice();
                
                
    // chiamo la funzione che carica gli swf esterni, passandogli 
                // come parametro il nome di uno dei miei swf a caso
                
    loadMc(randomMc());
            }
            private function 
    randomMc():String
            
    {
                
    // mi creo un indice randomico tenendo conto della length attuale
                // del mio array "copia", per avere sempre un indice valido
                
    var randomIndex:int=int(Math.random()*currentMc.length);
                
                
    // assegno questo nome ad una variabile 
                
    var mcName:String=currentMc[randomIndex];
                
                
    // elimino dal mio array copia l'elemento appena pescato, cosìchè
                // non possa essere ripescato in futuro
                
    currentMc.splice(randomIndex1);
                
                
    // ritorno il nome dell'swf da caricare
                
    return mcName;
            }
            private function 
    loadMc(mcName:String):void
            
    {
                
    // creo un'istanza della classe Loader
                
    loader=new Loader();
                
                
    // aggiungo il listener che mi segnalerà il completo caricamento del file
                
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
                
                
    // carico il file swf randomico, che si troverà nella cartella "banner"
                
    loader.load(new URLRequest("banner/"+mcName+".swf"));
            }
            private function 
    onComplete(e:Event):void
            
    {
                
    // assegno alla mia variabile mc il contenuto del mio loader
                // il casting forzato può essere evitato, io però lo faccio
                // per abitudine
                
    mc=e.target.content as MovieClip;
                
                
    // aggiungo alla display list l'swf caricato
                
    addChild(mc);
                
                
    // metto un listener EnterFrame che mi controlla ciclicamente
                // se l'swf è arrivato alla fine
                
    addEventListener(Event.ENTER_FRAME,checkEnd);
            }
            private function 
    checkEnd(e:Event):void
            
    {
                
    // controllo se l'swf è arrivato alla fine
                
    if(mc.currentFrame>=mc.totalFrames)
                {
                    
    // in caso affermativo tolgo l'EnterFrame
                    
    removeEventListener(Event.ENTER_FRAME,checkEnd);
                    
                    
    // rimuovo dalla display list l'swf e pulisco la variabile mc
                    
    removeChild(mc);
                    
    mc=null;
                    
                    
    // a questo punto controllo la length del mio array copia
                    
    if(currentMc.length>0)
                    {
                        
    // se è >0 vuol dire che ci sono swf che non ho mai  
                        // caricato, quindi chiamo nuovamente la funzione 
                        // di caricamento passandogli sempre come parametro 
                        // il nome del file random da caricare 
                        
    loadMc(randomMc());
                    }
                    else
                    {
                        
    // ho caricato sequenzialmente tutti i miei swf, 
                        // a questo punto pulisco il mio array copia e  
                        // ricomincio il ciclo, chiamando la funzione init.
                        // Se vuoi fare un solo ciclo di elimina l'else.
                        
    currentMc=null;
                        
    init();
                    }
                }
            }
        }

    Hola

  2. #12
    se gli swf sono gestiti da codice invece che da timeline (ad esempio se usi delle tween) l'enterframe .....pufff

    fallisce miseramente ...
    Photogallery Flash Gratis - http://www.flashfiles.biz -
    Template in Flash con pannello di Amministrazione e deeplinking Guarda il template qui

  3. #13
    ciao! scusami per il ritardo ma solo ora sono riuscito a riavvicinarmi al pc!

    cmq ti direi con piacere che funziona tutto...se non fosse per il fatto che non riesco a importare il pacchetto nel file principale!
    in pratica ho creato il file "caricarandom.as" e incollato il codice riportato sopra adattando il nome dei miei swf
    dopodichè ho definito la classpath e importato nel file fla principale la classe con il seguente codice:

    import caricarandom.Main;
    var myrandom:caricarandom.Main = caricarandom.Main ();

    ...e al debug mi da i seguenti il seguente errore:

    1172: impossibile trovare la definizione caricarandom:Main.

    come mai?
    cos'altro dovrei fare per importare la classe?

  4. #14
    No allora, le possibilità sono due: o cambi il nome del tuo file .as oppure cambi il nome della classe e del costruttore nel mio codice.
    Se ti sei creato il file caricarandom.as (che sarebbe meglio chiamare Caricarandom.as, con la C maiuscola), allora dovrai cambiare la dichiarazione di classe e del costruttore che da Main diventano:

    public class Caricarandom extends MovieClip

    public function Caricarandom()

    Poi per agganciare tutto al tuo fla basta che metti come Document Class il file Caricarandom.as

  5. #15
    opsss...hai ragione! ho cambiato il nome del file in Main.as
    quindi ho inserito questo codice nel fla:

    import Main;
    var myRandom:Main = new Main ();

    ora non mi esce nessun errore di debug ma...non mi succede niente!!non carica gli swf esterni!

    se gli swf sono gestiti da codice invece che da timeline (ad esempio se usi delle tween) l'enterframe .....pufff
    in realtà negli swf ci sono solo delle interpolazioni movimento con variazione dell'alfa...e solo uno stop alla fine dell'swf!è quello che crea problemi?

  6. #16
    Gli swf sono in una cartella banner?

    loader.load(new URLRequest("banner/"+mcName+".swf"));

  7. #17
    si si!inizialmente avevo adatttato il codice in base al nome della mia cartella, ora ho rimesso tutto a "banner" ma è la stessa cosa!
    ..stavo pensando, non è che devo associarlo a qualche movie clip come faceva il vecchio loadmovie??

  8. #18
    import Main;
    var myRandom:Main = new Main ();
    Non capisco perchè fai questo, se setti Main come Document Class del tuo fla non si serve a nulla. La document class è una sorta di estensione della timeline, quindi il codice scritto nella classe è come se fosse scritto sulla timeline del fla al quale è associato.
    Associa Main come Document Class al tuo fla e basta, senza importare nulla.

  9. #19
    FUNZIONAAAAAAAAAAA!!!!!!!!!!!
    ho tolto quel codice e definita la classe nelal document class come mi hai detto!
    grazie milleee Kaneda!..credo che a poco a poco sto cominciando a capire il meccanismo dell'AS3...ma sicuramente da solo non ce l'avrei fatta!!!

    ora però..se vorrei usare questa classe come oggetto, in modo da poter fare operazioni come su un normale movie clip, es. posizionarla su un certo livello della time line in modo che debba sovrapporre alcuni oggetti ed essere sovrapposta da altri, farla partire quando dico io oppure giocare con l'alfa...come posso fare?

    ovviamente è già troppo il tempo che mi hai dedicato e ti ringrazio di nuovo, se è complicato fare una cosa del genere mi adatto a quello che ho ora a disposizione!

  10. #20
    un consiglio:

    leggiti un manuale!

    hai le idee piuttosto incasinate e se parti così a tentativi senza conoscere nulla dellla sintassi ti ritrovi che spacchi il monitor
    parti piano passo a passo
    Photogallery Flash Gratis - http://www.flashfiles.biz -
    Template in Flash con pannello di Amministrazione e deeplinking Guarda il template qui

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.