Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    21

    [as3]Problema con Loader removeChild

    Ciao a tutti..allora ho un problema..ho un pagina home.swf che all'interno ha tanti clip filmato, che se cliccati caricano file .swf esterni, come per esempio filosofia.swf .
    Al click su clip filmato(filosofia) ho attribuito un codice di questo tipo:



    Codice PHP:
    filosofia.addEventListener(MouseEvent.CLICKclickHandler7);
    function 
    clickHandler7(e:MouseEvent) {
        
    trace("Hai cliccato sul pulsante 'FILOSOFIA'");
        
    var 
    filename:String "filosofia.swf";
    var 
    request:URLRequest = new URLRequest(filename);
    var 
    loader:Loader = new Loader();
    var 
    infoloader:LoaderInfo loader.contentLoaderInfo;
    infoloader.addEventListener(Event.COMPLETE,completeHandler7);
    infoloader.addEventListener(HTTPStatusEvent.HTTP_STATUShttpStatusHandler7);
    infoloader.addEventListener(Event.INITinitHandler7);
    infoloader.addEventListener(IOErrorEvent.IO_ERRORioErrorHandler7);
    infoloader.addEventListener(Event.OPENopenHandler7);
    infoloader.addEventListener(ProgressEvent.PROGRESSprogressHandler7);

    function 
    completeHandler7(event:Event) {
        
    trace("Caricamento completato, è possibile effettuare azioni sul file appena caricato!");
    }
    function 
    httpStatusHandler7(event:HTTPStatusEvent) {
        
    trace("Ricevuto stato http "+event.status);
    }
    function 
    initHandler7(event:Event) {
        
    trace("File esterno inizializzato, è adesso possibile richiamare le azioni contenute nel file esterno!");
    }
    function 
    ioErrorHandler7(event:IOErrorEvent) {
        
    trace("Errore durante il caricamento del file");
    }
    function 
    openHandler7(event:Event) {
        
    trace("Caricamento inizializzato, attendere il completamento!");
    }
    function 
    progressHandler7(event:ProgressEvent) {
        var 
    percentual:int = (event.bytesLoaded/event.bytesTotal)*100;
        
    trace("Caricamento di "+percentual+"%");
    }

    loader.load(request);
    addChild(loader);
        



    quindi regolarmente apre filosofia.swf sopra ad home.swf

    ora il mio problema è questo: su fiosofia.swf ho bisogno di un pulsante che m rimandi ad home.swf che in teoria ed in pratica è sotto( sotto nella disposizione dei livelli) quindi qualcosa tipo removeChild.
    solo che non ho la minima idea di come fare. m potete aiutare?!che codice devo attribuire al pulsante?
    grazie mille a tutti.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    21
    Nessuno può darmi una mano!?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    21
    Ho provato qualcosa e sono arrivato a questo..che non fa quelo che m serve ma quasi: in pratica..pare che scarica il livello..solo però se povato da solo..se avviato prima home.swf.. poi con il pulsante "filosofia" carico filosofia.swf...quando clicco sul pulsante "home" mi da un errore.
    Questo è l'errore:



    Error: Error #2069: La classe Loader non implementa questo metodo.
    at Error$/throwError()
    at flash.display::Loader/removeChild()
    at filosofia_fla::MainTimeline/clickHandler()






    questo è il codice che ho provato.


    Codice PHP:
    home.addEventListener(MouseEvent.CLICKclickHandler);

    function 
    clickHandler(e:MouseEvent) {
        
        
    trace("Hai cliccato sul pulsante 'HOME'");
    if (
    this.parent != null)
    {

    this.parent.removeChild(this);
    }    





    se qualcuno mi può aiutare...sto impazzendo! -.-

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    L'ultimo codice che hai postato ti da errore perchè tenti di rimuovere il contenuto dal loader con removeChild, ma dovresti usare unload() oppure dovresti rimuovere o rendere invisibile direttamente il loader, quindi dovresti usare un doppio parent, this.parent.parent, ma è sempre più fastidioso da fare.

    Ah, io per caricare i filmati esterni utilizzerei un solo loader, non so com'è il codice degli altri pulsanti, ma se sono tutti uguali, tu crei un loader ogni volta che vuoi caricare una sezione e non va benissimo come cosa, perchè non scarichi mai gli altri filmati e a lungo andare immagino che si sovrappongano anche più filmati uguali (se clicco sempre su filosofia, continuerà a caricarsi più volte uno sopra l'altro).

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    21
    Si il problema è proprio quello..cioè si sovrappongono sempre filmati uguali..ma come dovrei modificare quindi per scaricare i filmati!? quale dei due codici dovrei modificare?
    cmq sei gentilissimo.grazie.

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Entriamo un pochino nel dettaglio, il codice che hai scritto nel primo post è quello da modificare, ma vedo che la funzione ha un nome probabilmente progressivo (per via del numero finale) e mi viene da pensare che tu abbia scritto una funzione identica per ogni pulsante allungando a sproposito il codice, il che è facilmente evitabile con una routine che riconosce quale pulsante viene cliccato e indirizza, tramite la stessa funzione, al caricamento del filmato corretto, usando un solo Loader che verrebbe impostato ancora prima di arrivare al punto del click sul pulsante.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    21
    Immagini bene..in pratica 8 pulsanti e 8 codici..non sono in grado di fare quello che dici te!come dovrei modificare? i pulsanti hanno tutti come istanza storia, filosofia, italiano etc..e devono collegare a storia.swf, filosofia.swf, italiano.swf
    una volta sulle varie sezioni con un pulsante, contenuto possibilmente sulla sezione caricata e non su home.swf dovrei tornare a home.swf
    spero di essere stato chiaro!..come si capisce sto alle prime armi senza armi!

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Ok per prima cosa creiamo il loader fuori dalla funzione e lo teniamo pronto da una parte a ricevere i caricamenti quando vengono cliccati i pulsanti, poi aggiungiamo un listener per l'evento CLICK a tutti i tuoi pulsanti (io metto questi tre che hai detto, poi basta che aggiungi righe e nomi per tutte le altre sezioni), e per ultimo creo la funzione unica che sfruttando il nome del pulsante (da quello che mi hai fatto capire il nome del pulsante corrisponde con il nome dell'swf da caricare) carica il filmato corrispondente.

    Codice PHP:
    var loader:Loader addChild(new Loader()) as Loader;
    loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function (evt:IOErrorEvent):void trace("Errore, il file richiesto non esiste e non può essere caricato.") });
    filosofia.addEventListener(MouseEvent.CLICKclickHandler);
    storia.addEventListener(MouseEvent.CLICKclickHandler);
    italiano.addEventListener(MouseEvent.CLICKclickHandler);
    function 
    clickHandler (evt:MouseEvent):void {
        try {
            
    loader.load(new URLRequest(evt.target.name+".swf"));
        } catch (
    err:Error) {
            
    trace (err);
        }

    Non ti serve altro, apparte il pulsante che scarica i filmati per farti tornare alla home, ma questo è semplice, basta che piazzi un pulsante proprio su home.swf spostato in alto o in basso, in modo che non venga coperto dai filmati esterni (potresti anche inserirlo via codice dopo il loader, a quel punto lo potresti mettere dove vuoi essendo un livello sopra al loader) e gli assegni solo il codice dell'unload, anche su una sola riga in questo modo:

    Codice PHP:
    torna_a_home.addEventListener(MouseEvent.CLICK, function (evt:MouseEvent):void { try {loader.unload()} catch (err:Error) {}}); 
    Da inserire come seconda riga nel codice precedente, subito dopo la creazione di "loader"

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    21
    Grazie mille..Ora non sono a casa..Però come torno provo..E t dico..Grazie mille per l impegno..Cmq da quello che ho capito con l ultima riga di codice che m hai postato posso mettere il pulsante che scarica il livello anche sull file esterno caricato..però il codice va su home.Swf o su filosofia.Swf intendo il codice x scaricare..Grazie mille

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    No, il codice per come te l'ho scritto può andare solo su home, sugli altri otterresti un errore.

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.