Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    25

    addChild() non funziona come dovrebbe?

    Salve a tutti, è da piu di una settimana che provo ad aggiungere un swf in code ad una ltro swf, e dopo finalmente esserci riuscito con addChild() mi rendo conto che il file swf che dovrebbe partire(un semplice animazione-filmato) si blocca all'esecuzione del primo fotogramma.
    Qualcuno sa dirmi perchè?


    PS.ovviamente sto usando l'AS3.

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    indicativamente direi che hai nell'swf "di coda" delle azioni che lo bloccano al primo fotogramma, o meglio, che dovrebbero farlo muovere, ma che non lo fanno, magari perchè non si punta alla timeline giusta
    ma questa è solo una supposizione, senza un minimo di codice o di spiegazioni su come agiscono gli swf e come caricano quelli esterni ecc, c'è poco da considerare

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    25
    ciao and80, mio salvatore!
    questo problema è legato a questa discssione aperta in precedenza

    http://forum.html.it/forum/showthrea...8#post11029818

    ma purtroppo sono ancora qui.
    riassumo ho una homepage che carica un loading(swf) che dinamicamente decide cosa caricare in base al valore messo in precedenza in un file Dati.as
    codiceati.as
    Codice PHP:
    package {


        public class 
    Dati
        
    {
            
            public static var 
    caricato:Array=[0,0,0,0,0,0,0,0];
            public static var 
    stoCaricando:Array=[0,0,0,0,0,0,0,0];
            public static var 
    prossimoLivello:Number=2;
            public static var 
    tempo:Number=0;
            public static var 
    livelli:Array=['Homepage.swf',  //0
                                              
    'Loading.swf',  //1
                                              
    'Intro.swf',    //2
                                              
    'Main_page.swf',//3
                                              
    'album/album1/Album1.swf',//4        

                                          
      
    'album/album2/Album2.swf'//5
                                              
    'album/album1/Album3.swf',//6
                                              
    'Itinerario.swf',//7
                                              
    'Contattami.swf'//8
                                              
    'ChiSono.swf']//9

            

        
    }


    e il file loading.swf
    (N.B. c'è del codice che è inerente a uno scolling di un mc che fa una sorta di loop,non è utile ai fini del caricamento, segnero quelle linee di codice con //@)

    Codice PHP:
    stop();
    var 
    n:Number=0;  //@
    fader_istanza1.alpha =0;//@
    fader_istanza2.alpha=0;//@
    var caricatobl:Boolean =false;
    var 
    loadingbl:Boolean =false;
    var 
    request:URLRequest = new URLRequest(Dati.livelli[Dati.prossimoLivello]);
    var 
    loader:Loader = new Loader();

    loader.contentLoaderInfo.addEventListener(Event.COMPLETEcompleteHandler);
    loader.contentLoaderInfo.addEventListenerProgressEvent.PROGRESShandleProgress );


    function 
    completeHandler(event:Event)
    {
        
    caricatobl=true;

    }
    function 
    handleProgressevent:ProgressEvent ):void
    {
        var 
    percent:int event.bytesLoaded event.bytesTotal 100;
        
    txt_percento.text=""+percent+"%";
    }
    loader.load(request);



    function 
    faderCircolare(event:Event):void
    {
        
    n++;
        if (
    loadingbl == false)
        {
            
    fader_istanza1.alpha += 0.05;//@
            
    fader_istanza2.alpha += 0.05;//@
            
    if (fader_istanza1.alpha>1)//@
            
    {
                
    loadingbl=true;//@
                
    fader_istanza1.alpha 1;//@
            
    }
        } else if (
    caricatobl==true)
            {
                
    loadingbl=true;
                
    fader_istanza1.alpha -=0.05;//@
                
    fader_istanza2.alpha -=0.05;//@
                
    if (fader_istanza1.alpha 0)//@
                
    {
                    
    addChild(loader);

                    var 
    movie:*=loader.content;
                    var 
    clip:MovieClip=movie;
                    
    clip.gotoAndPlay(2);
                }
            }
        }
        
    fader_istanza1.-= 4;//@
        
    fader_istanza2.-= 4;//@
        
    if ( fader_istanza1.< -1120)//@
        
    {
            
    fader_istanza1.+=2940;//@
        
    }
        if (
    fader_istanza2.< -1120)//@
        
    {
            
    fader_istanza2.+=2940;//@
        
    }
    }

    fader_istanza1.addEventListener(Event.ENTER_FRAMEfaderCircolare); 

    spero sia chiaro altrimenti sono qui per chiarimenti!

    Ps.ultima precisazione un file homepage(qui omesso.)inserisce 2 nella variabile
    prossimoLivello
    e fa partire il file
    Loading.swf
    che a sua volta come si vede carica una semplice animazione costruita su una timeline e al cui interno c'è il primo frame con un azione
    stop();
    e dal secondo in poi l'animazione vera e propria.
    Il problema è che si freeza sul secondo frame senza andare avanti.

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    a occhio e senza una elevata attenzione, credo che il tuo problema sia qui

    var movie:*=loader.content;
    var clip:MovieClip=movie;
    clip.gotoAndPlay(2);

    evidentemente "content" non esiste ancora fino a che il file non è completamente caricato, per questo l'azione di spostamento al frame 2 va a vuoto... probabilmente per correggere basta mettere l'ultima riga del codice

    fader_istanza1.addEventListener(Event.ENTER_FRAME, faderCircolare);

    dentro la fuzione completeHandler

    so che utilizzi la pezza dell'if per vedere se il caricamento è stato accettato, ma magari...

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    25
    mi dispiace ma non è quella la solzione,il

    var movie:*=loader.content;
    var clip:MovieClip=movie;
    clip.gotoAndPlay(2);

    è gia una pezza inserita perche non funzionava con un semplice addChild()
    (effettivamnete nn ha risolto un bel niente quindi al tutto puoi lasciare anche un semplice addChild())
    e

    fader_istanza1.addEventListener(Event.ENTER_FRAME, faderCircolare);

    dentro la fuzione completeHandler
    non è fattibile poichè l'idea di base è che ci sia un mc(fader istanza1) che scorre in maniera circolare "mentre carica", non dopo caricato.

    altrimenti non avrebbe senso.

    altre idee mio buon and80?
    Ps.grazie per gli aiuti che mi fornisci.

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    più che una soluzione la mia era un'ipotesi, quando chiaramente non è fattibile per determinati motivi, si passa ad altro... ad esempio hai provato a tracciare qualcosa dentro quell'if? sei sicuro al 100% che il player ci entri dopo che il file esterno è stato caricato?, considera anche che la TL del file esterno sarà attiva e utilizzabile dopo un "init" e non dopo un "complete"

    ah, altra cosa, dovresti poter evitare un passaggio qui:

    var movie:*=loader.content;
    var clip:MovieClip=movie;
    clip.gotoAndPlay(2);

    facendo:

    var clip:MovieClip = loader.content as MovieClip;
    clip.gotoAndPlay(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.