Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    174

    AS3 e caricamento di swf esterni all'interno di un swf principale

    Ciao
    personalmente ritengo AS3 una gran rottura per certe cose che prima erano semplicissime e veloci, adesso per caricare un swf ci sta da scrivere 2000 riga di codice AS... complimenti...
    Sono abbastanza incavolato e sto incominciando ad odiare AS3, quando prima con un semplice loadmovienum si faceva tutto...
    Detto questo, ho un problemino sul quale sbatto le corna da giorni...

    TypeError: Error #1009: Impossibile accedere a una proprietà o a un metodo di un riferimento oggetto null.
    at com::Main$iinit()

    Questo è l'errore, venuto da un semplice main.swf che mi richiama il menu di navigazione con chiamate xml

    var lmenu:Loader = new Loader();

    lmenu.load(new URLRequest("menu.swf"));

    addChild(lmenu);

    Entrambi i file menu e main gestiscono 2 classi separte, che singolarmente funzionano, quando cerco di caricare il menu all'interno del main non funziona...

    aiuto!
    powered by Intel QuadCore
    SmallRenderFarm with 3 servers based on [Intel Core 2 QuadCore q9300 - gigabyte ds4 - 8 gb ddr3 - quadro fx - 4 x 500 gb raid - thermaltake armor - vista 64]

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    il problema sta chiaramente su una delle classi e probabilmente dipende dal fatto che stai tentando di richiamare una proprietà (es. "stage") che non puoi richiamare fino a che il file non viene aggiunto alla display list, ma è necessario veedere la classe Main per capire dove crea problemi

    a me, al contrario, AS3 garba molto più dei precedenti, e se il prezzo da pagare perchè tutto funzioni come dovrebbe, è quello di scrivere una riga in più nel codice, preferisco così

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    174
    ma si può importare l'AS caricato esternamente all'interno del fla?
    pensi che possa risolvere?

    perchè il problema adesso mi si presenta su tutti i files...

    cioè...

    immagina questa situazione

    1 file fa da background
    1 da menu
    2 i contenuti (possono essere newsticker, gallerie fotografiche etc etc)

    ognuno di questi swf contiene il suo .as e il suo xml... e ogni volta ho lo stesso problema object null errore 1009 $iinit
    senza che mi viene specificata una variabile o qualcosa di particolare, tranne il nome del file .as (tipo menu$iinit)

    praticamente... sto esplodendo...
    powered by Intel QuadCore
    SmallRenderFarm with 3 servers based on [Intel Core 2 QuadCore q9300 - gigabyte ds4 - 8 gb ddr3 - quadro fx - 4 x 500 gb raid - thermaltake armor - vista 64]

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    certo che si può, l'utilizzo delle Document Class all'interno dei propri progetti è a scelta dello sviluppatore, io ad esempio mi ci trovo meglio, ma non è esclusa la possibilità di scrivere il codice direttamente nel fla come si faceva prima

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    174
    Originariamente inviato da and80
    certo che si può, l'utilizzo delle Document Class all'interno dei propri progetti è a scelta dello sviluppatore, io ad esempio mi ci trovo meglio, ma non è esclusa la possibilità di scrivere il codice direttamente nel fla come si faceva prima
    si però ho un problema adottando questo metodo che le public function e le public vars non le posso dichiarare all'interno del fla e se non le dichiaro o le trasformo in private mi succede un casino...

    principalmente ho sempre lo stesso errore di object null iniit..
    ma come si può risolvere stà cosa? era tutto cosi semplice con i loadmovienum...
    powered by Intel QuadCore
    SmallRenderFarm with 3 servers based on [Intel Core 2 QuadCore q9300 - gigabyte ds4 - 8 gb ddr3 - quadro fx - 4 x 500 gb raid - thermaltake armor - vista 64]

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    semplice sì, se non consideri i problemi di percorsi ecc...
    comunque strutturando le classi nella maniera adeguata, puoi usare tranquillamente queste, mentre se preferisci usare la timeline per scrivere il codice lo puoi fare lo stesso, non dichiari le variabili come pubbliche o private e scrivi il codice come facevi anche prima con AS2

  7. #7
    ho un problema simile..

    devo caricare file swf o img esterni in un clip da una classe esterna
    e fin qui ok..carica senza problemi

    il problema si presenta qunado carico un nuovo swf esterno nello stesso clip, as2 scaricava il precendente e caricava il nuovo, as3 li sovrappone..

    l'effetto non è dei migliori..mi trovo tutti i miei swf uno sopra l'altro all'interno del clip..

    c'è una soluzione?
    ho provato con clipsullostage.contenitore.removeChild(filmatoeste rno)
    ma se lo metto subito dopo l'addChild giustamente nn vedo nulla perchè scarica il clip, se lo metto prima (come avrei fatto in as2) giustamente mi dice che non esiste filmatoesterno...

    non so se mi sono spiegato..ma..

    come si fa a caricare piu img/swf esterni all'interno di un mc sullo stage senza trovarseli tutti sovrapposti?

    grazie

    ps: as3 è molto piu complesso di as2 per i "non programmatori" come me, ma obiettivamente è piu pulito, logico, per non contare la fluidità che si ottiene nelle animazioni as

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    se utilizzi lo stesso loader, anche su AS3 il filmato successivo sostituisce quello attuale

    ad esempio:

    Codice PHP:
    var m:MovieClip = new MovieClip();
    var 
    l:Loader Loader(m.addChild(new Loader()));
    l.contentLoaderInfo.addEventListener(Event.COMPLETEcomplete);
    l.load(new URLRequest("D:\\www\\__BASI\\image.jpg"));
    function 
    complete (e:Event) {
        
    l.contentLoaderInfo.removeEventListener(Event.COMPLETEcomplete);
        
    setTimeout(newLoad5000);
    }
    function 
    newLoad () {
        
    l.load(new URLRequest("D:\\www\\__BASI\\pesce.jpg"));
    }
    addChild(m); 

  9. #9
    Originariamente inviato da and80
    se utilizzi lo stesso loader, anche su AS3 il filmato successivo sostituisce quello attuale

    ad esempio:

    Codice PHP:
    var m:MovieClip = new MovieClip();
    var 
    l:Loader Loader(m.addChild(new Loader()));
    l.contentLoaderInfo.addEventListener(Event.COMPLETEcomplete);
    l.load(new URLRequest("D:\\www\\__BASI\\image.jpg"));
    function 
    complete (e:Event) {
        
    l.contentLoaderInfo.removeEventListener(Event.COMPLETEcomplete);
        
    setTimeout(newLoad5000);
    }
    function 
    newLoad () {
        
    l.load(new URLRequest("D:\\www\\__BASI\\pesce.jpg"));
    }
    addChild(m); 




    il codice che utlizzo è questo, ed è all'interno di un file main.as cn che racchiude tutte le altre funzioni:
    Codice PHP:

    private function caricamento(file) {

                
    trace(file);
                
                
                
                
                    
                
                
                
                
                var 
    caricatore:Loader = new Loader();
                var 
    myRequest:URLRequest = new URLRequest(file+".swf");

                var 
    thisMC:MovieClip=new MovieClip()


                
    caricatore.load(myRequest);


                
                
    trace(myRequest);

                
    caricatore.contentLoaderInfo.addEventListener(Event.OPEN,showPreloader);
                
    caricatore.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,showProgress);
                
    caricatore.contentLoaderInfo.addEventListener(Event.COMPLETE,showLoadResult);

                var 
    loadProgress_txt:TextField = new TextField();

                function 
    showPreloader(evt:Event):void {

                    
    addChild(loadProgress_txt);
                }
                function 
    showProgress(evt:ProgressEvent):void {
                    
    //trace("loaded: "+ (Math.round((evt.bytesLoaded*100)/100))+" from "+evt.bytesTotal);
                    
    var p:Number Math.round(100*(evt.bytesLoaded/evt.bytesTotal));
                    
    trace(p);
                    
    loadProgress_txt.textColor 0xFFFFFF;
                    
    loadProgress_txt.text "loaded:"+evt.bytesLoaded+" from "+evt.bytesTotal;
                }
                function 
    showLoadResult(evt:Event):void {
                    
    removeChild(loadProgress_txt);
                    

                                    
                    var 
    thisMC caricatore.content
                    

                    caricatore
    .unload()
                    
                    
                    
                    
    sezione.addChild(thisMC);

                    

                    
    sezione.300;
                    
    sezione.0;
                    
    sezione.alpha=0;
                    
    Tweener.addTween(sezione,{alpha:1,time:2,transition:"easeOutExpo"});
                }
            } 

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    il problema è che crei un Loader ogni volta che richiami quella funzione
    potrebbe anche andare bene così, ma in quel caso devi necessariamente eliminare il Loader precedente dal clip che sfrutta la funzione

    dove c'è l'addChild del Loader puoi provare a fare questo:

    codice:
    try {
        sezione.addChildAt(thisMC, sezione.numChildren-1);
    } catch (e) {
        sezione.addChild(thisMC);
    }
    che dovrebbe funzionare senza problemi se non hai altri clip innestati nell'mc oltre al content del Loader

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.