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

    [AS3] Preload completo riutilizzabile

    Ciao, tempo addietro mi ero messo insieme un preload completo che ad ogni evento mi restituiva dei dati o eseguiva funzioni, riutilizzabile per caricare vari swf esterni, ora in as3 non va più e vorrei capiere come rifarlo da zero in as3... unico problema, conoscenza di as3 praticamente nulla...

    Se qualche anima pia mi volesse dere una mano...
    di seguito la descrizione di quel che dovrebbe fare:

    1) file "preload.swf" che poi mi caricherà qualsiasi altro swf/jpg
    2) nel file preload dovrebbe esserci solo il codice riutilizzabile per caricare vari altri swf/jpg e la barra/testo di caricamento/errore.

    Nel dettaglio sarebbe:
    1) Decido quale file caricare
    2) Decido dove caricare il file esterno (in quale mc)
    3) Avvia il caricamento del file
    4) Posizionamento della barra di caricamento sullo stage
    5) Se errore (file non trovato) eseguire una funzione
    6) Se tutto ok, avanzamento di barra e percentuale
    7) Alla fine del caricamento rimozione barra ed esecuzione di un'azione

    Secondo voi è fattibile come cosa?
    Qualcuno ha idea di come si potrebbe fare in AS3

    Grazie a tutti!!!
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  2. #2
    per ora ho trovato/riadattato questo, ma no so come completalro...

    Codice PHP:
    import flash.events.ProgressEvent;
    /*##### INIZIO BLOCCO PER TEST 
    dovrei prendere la variabile 0 o 1 da una flashvars di swfobject per capire se il filmato viene eseguito da flash o da pagina html (in as3 ancora non so bene come fare..)
    */
    var test=1;
    //
    var filedacaricare;
    if (
    test==1) {
        
    filedacaricare="main-site.swf";//sviluppo
    } else {
        
    filedacaricare="flsah/main-site.swf";//online
    }
    //##### FINE BLOCCO PER TEST

    var request:URLRequest=new URLRequest(filedacaricare);
    var 
    ldr:Loader = new Loader();
    this.addChild(ldr);

    ldr.contentLoaderInfo.addEventListener(Event.COMPLETEcompleteHandler);
    ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESSprogressHandler);

    ldr.load(request);


    function 
    progressHandler(evt:ProgressEvent):void {
        var 
    percent:Number=evt.target.bytesLoaded/evt.target.bytesTotal;
        
    preloader.fill.scaleX=percent;
    }

    function 
    completeHandler(evt:Event):void {
        
    this.removeChild(preloader);
        
    evt.target.content.gotoAndPlay(2);

    Qualche idea per proseguirlo?
    ho anche problemi a recuperare la flashvars...
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  3. #3
    ..nel codice riportato nel post qui sopra, come eseguire qualcosa in caso di file non trovato?
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Devi gestire l'evento IOError_Event.IO_ERROR per il loader che nel tuo codice ha nome "ldr".

  5. #5
    quindi sarebbe una cosa tipo..

    Codice PHP:
    ldr.addEventListener(IOErrorEvent.IO_ERRORIOError); 
    function 
    IOError(event:IOErrorEvent)  { 
      
    trace("Errori catturati: "+event.type); 

    giusto ora?
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Sì apparte il nome della funzione che coincide con il nome di una classe del core di flash e potrebbe dare noia

    Codice PHP:
    ldr.addEventListener(IOErrorEvent.IO_ERRORerrorFunc);
    function 
    errorFunc (event:IOErrorEvent):void  {
      
    trace("Errori catturati: "+event.type);


  7. #7
    Ciao, ho provato ad inserire la funzione, ed ad eliminar eil file esterno, solo che l'unico errore che mi traccia è il seguente:
    Error #2044: IOErrorEvent non gestito:. text=Error #2035: Impossibile trovare l'URL.
    Del trace invece nessuna traccia.. come mai?
    la funzione la ho messa dopo
    ldr.load(request);

    Cosa posso fare?
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Sembra che tu non abbia aggiunto l'evento :master:

  9. #9
    di seguito il contenuto del primo frame
    Codice PHP:
    import flash.events.ProgressEvent;
    // imposto se test o onlne
    var test=0;
    // seleziono il file da caricare
    var filedacaricare;
    if (
    test==1) {
        
    filedacaricare="main-site.swf";//sviluppo
    } else {
        
    filedacaricare="flash/main-site.swf";//online
    }
    // caricamento file esterno
    var request:URLRequest=new URLRequest(filedacaricare);
    var 
    ldr:Loader = new Loader();
    this.addChild(ldr);

    ldr.contentLoaderInfo.addEventListener(Event.COMPLETEcompleteHandler);
    ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESSprogressHandler);

    ldr.load(request);
    // errore caricamento
    ldr.addEventListener(IOErrorEvent.IO_ERRORerrorFunc);
    function 
    errorFunc(event:IOErrorEvent):void {
        
    trace("Errori catturati: "+event.type);
    }
    // progresso caricamento
    function progressHandler(evt:ProgressEvent):void {
        var 
    percent:Number=evt.target.bytesLoaded/evt.target.bytesTotal;
        
    preloader.fill.scaleX=percent;
    }
    // caricamento completato
    function completeHandler(evt:Event):void {
        
    this.removeChild(preloader);
        
    //this.removeChild(naokostudiomoda_mc);
        
    evt.target.content.gotoAndPlay(2);

    appositamente ho modificato il prcorso del file così che non lo trovi, ma nulla solo l'errore riportato sopra, cosa posso controlare/modificare?
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Scusa, errore mio, anche il listener dell'errore va associato al contentLoaderInfo e non direttamente al loader
    Codice PHP:
    ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERRORerrorFunc); 

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 © 2026 vBulletin Solutions, Inc. All rights reserved.