Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Cancellare un swf esterno caricato con addChild

    Salve a tutti,
    volevo porvi un quesito:

    ho caricato un swf esterno, solo che quando con il menù cambio pagina questo mi rimane sempre visibile, quindi devo fare unload, solo che ormai è obsoleto ed io non so come farlo in AS3.

    Qui vi posto il codice con il quale ho caricato swf esterno, vorrei sapere che codice dare ai bottoni perchè quando si clicchino, questi, oltre a farti spostare nella timeline, facciano anche l'unload del swf caricato.


    // creo un nuovo oggetto di tipo URLRequest e gli passo come parametro l'url del file esterno da caricare
    var request:URLRequest = new URLRequest("form.swf");
    // istanzio un nuovo oggetto della classe Loader
    var loader:Loader = new Loader();
    // aggancio all'istanza un listener che verifica quando il caricamento è avvenuto e richiama la funzione associata
    loader.contentLoaderInfo.addEventListener(Event.CO MPLETE, completeHandler);
    // inizializzo la funzione completeHandler, che verrà richiamata quando il contenuto esterno è caricato completamente
    function completeHandler(event:Event){
    trace("Caricamento completato!");
    }
    // richiamo il metodo load, che decreta l'avvio del caricamento esterno
    loader.load(request);
    // aggiungo l'oggetto Loader creato, allo stage, attraverso il metodo addChild()
    addChild(loader);


    questo funziona senza problemi, l'ho trovato in giro, solo che non so come farlo sparire al click dei vari pulsanti del sito.

    Che metto nel codice del pulsante?


    on (press) {
    removeChild(loader);
    gotoAndPlay(135);
    }


    avevo provato così ma non serve a nulla, quell'swf rimane piantato al suo posto!!!

    Aiutatemi che devo consegnare adesso il lavoro ad un mio carissimo amico che altrimenti mi cazzia!!!

    Poi ho fatto così:

    var loader:Loader = new Loader();
    addChild(loader);
    loader.load(new URLRequest("form.swf"));
    loader.x = 10;
    loader.y = 100;


    me lo carica ma poi non lo toglie....


    Grazie
    Neohiro

  2. #2
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Prova così:

    Codice PHP:
    Pulsante.addEventListener(MouseEvent.CLICK,rimuoviOggetto);

    function 
    rimuoviOggetto(evento:MouseEvent):void 
    removeChild(loader); 
    loader null

  3. #3
    Ma quel codice lo metto nel pulsante ed al posto di pulsante. metto il nome della sua istanza?

    Grazie
    Neohiro

    No

    non funziona il maledetto swf rimane sempre lì!!!

  4. #4
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Originariamente inviato da neohiro
    Ma quel codice lo metto nel pulsante ed al posto di pulsante. metto il nome della sua istanza?
    Non nel pulsante (non si può mettere codice all'interno del pulsante in AS3).
    Lo devi mettere nel codice dove hai aggiunto l'oggetto "loader" con addChild e al posto di "Pulsante" metti il nome del pulsante che deve essere cliccato per far sparire l'oggetto "loader".

  5. #5
    Fatto ma mi da i seguenti errori:

    1119: Access of possibly undefined property rimuoviOggetto through a reference with static type Class.

    1136: Incorrect number of arguments. Expected 2.

    Alla linea 7 che è questa: home.addEventListener(MouseEvent.rimuoviOggetto);

    questo è tutto il codice che ho messo:

    var loader:Loader = new Loader();
    addChild(loader);
    loader.load(new URLRequest("form.swf"));
    loader.x = 10;
    loader.y = 100;

    home.addEventListener(MouseEvent.rimuoviOggetto);
    function rimuoviOggetto(evento:MouseEvent):void {
    removeChild(loader);
    loader = null;
    }

  6. #6
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Evidentemente hai copiato il codice prima che lo correggessi, avevo dimenticato il CLICK

    Pulsante.addEventListener(MouseEvent.CLICK,rimuovi Oggetto);

    Comunque il primo errore che ti dà mi fa pensare che hai usato il simbolo "pulsante" per fare il pulsante e non un simbolo "ClipFilmato"
    Questo dovrebbe cambiare un pò di cose e in tal caso non saprei come aiutarti a risolvere (sono alle prime armi con AS3)

    Ho provato il tuo codice con l'aggiunta del listener a un pulsante (simboloMovieClip nominato "pulsante" nelle proprietà) e funziona ! L'immagine caricata viene rimossa:

    var loader:Loader = new Loader();
    addChild(loader);
    loader.load(new URLRequest("Immagini/pic5.jpg"));
    loader.x = 10;
    loader.y = 100;

    pulsante.addEventListener(MouseEvent.CLICK,rimuovi Oggetto);
    function rimuoviOggetto(evento:MouseEvent):void {
    removeChild(loader);
    loader = null;
    }

  7. #7
    Ok, ti ringrazio molto, provo e ti faccio sapere, nel caso che dovrei fare per cambiare i pulsanti?

    FUNZIONA!!!!!!!!!!!!!!!! Sei un grande!
    Grazie mille ma anche duemila e tremila!!!!!!!

  8. #8
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Originariamente inviato da neohiro
    ... nel caso che dovrei fare per cambiare i pulsanti?
    Ho appena verificato che cambiando da simbolo "MovieClip" a simbolo "Pulsante" nelle proprietà del clip e viceversa, mi sembra che non cambi nulla a parte il fatto che il MovieClip non è limitato ai 4 fotogrammi e che il Pulsante visualizza la manina senza dover aggiungere codice ...

    Sono contento che hai risolto e ti ringrazio per il "grande !" anche se sò che tanto "grande" non sono e spesso con il Flash ci litigo anch'io di brutto per ore, per delle cose che poi quando si sanno, sono semplicissime e si risolvono in 2 minuti.

    Tornando al codice che ti ho suggerito può essere utile sapere che basterebbe il removeChild per rimuovere la vista dell'oggetto dallo stage ma con solo il removeChild l'oggetto rimosso rimane comunque nella memoria del Flash e se in seguito nello script, a tale oggetto venissero attribuite nuove proprietà, alla richiamata dell'oggetto tramite addChild , l'oggetto avrebbe le nuove proprietà che gli sono state assegnate.
    Aggiungendo il loader = null; l'oggetto viene cancellato in modo definitivo, il che, è molto utile nel caso si debbano caricare molti oggetti ed eliminarli senza appesantire inutilmente la memoria del Flash.


  9. #9
    Si meglio come hai fatto tu,
    ancora grazie.


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.