Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23

Discussione: [AS3]rimuovere swf

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    29

    [AS3]rimuovere swf

    Ciao a tutti, qualcuno mi sa dire come faccio a caricare e scaricare swf esterni in un movie principale al click dei relativi pulsanti.
    es:
    -pulsante "A" mia avvia "1.swf",
    -click su pulsante "B" dovrebbe scaricarsi "1.swf" e caricarsi "2.swf"
    -click sul pulsante "C" dovrebbe scaricarsi "1.swf" o "2.swf", a seconda di quello caricato in quel momento sullo stage e caricarsi "3.swf".
    .....................e così per gli altri bottoni/swf esterni.

    Grazie in anticipo.

    --------
    on line si trova qualcosa sul loading\unloading(e alternative in as3)...ma alcune sono decisamente troppo complicate e per me incomprensibili...mi servirebbe qualcosa di più "masticabile".

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Per effettuare dei caricamenti esterni, al movieclip principale devi aggiungere un "Loader" e lo devi fare via codice.
    Un caricamento standard in AS3 avviene creando il loader, aggiungendolo alla visualizzazione sullo schermo o sul clip che preferisci e facendo il load del filmato esterno.
    Codice PHP:
    var loader:Loader = new Loader();
    clip.addChild(loader);
    loader.load(new URLRequest("1.swf")); 
    Nel tuo caso il loader lo aggiungi solo una volta e poi usi ogni volta il "load" per caricare un nuovo filmato.

    Codice PHP:
    var loader:Loader clip.addChild(new Loader()) as Loader;
    A.addEventListener(MouseEvent.CLICKclickHandler);
    B.addEventListener(MouseEvent.CLICKclickHandler);
    C.addEventListener(MouseEvent.CLICKclickHandler);
    D.addEventListener(MouseEvent.CLICKclickHandler);
    function 
    clickHandler (event:MouseEvent) {
        switch (
    event.target) {
            case 
    A:
                
    loader.load("1.swf");
                break;
            case 
    B:
                
    loader.load("2.swf");
                break;
            case 
    C:
                
    loader.load("3.swf");
                break;
            case 
    D:
                
    loader.load("4.swf");
                break;
        }


  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    29
    Perfetto, grazie mille....e soprattutto......che velocità!!
    Quindi, se ho capito bene inserisco il loader con le azioni da dare ai pulsanti nella timeline principale...(e quindi il primo pezzo di codice con urlrequest nn mi serve più in qst caso)...

    Scusa la domanda....sicuramente è una cavolata, ma in che modo, quando passo da "A" a "B" il fimato caricato si "scarica" per farmi vedere quello richiamato dal bottone cliccato...giusto per cercare di capire il codice e non solo fare un copia incolla.

    -ma nel caso "1.swf" fosse in una cartella diversa a quella del filmato principale basterebbe scrivere:
    -------
    case A:
    loader.load("cartella/1.swf");
    break;
    -------
    .....grazie ancora.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    29
    Ho provato a "pasticciare" un po sul tuo codice perchè probabilmente sbagliavo qlc e non mi funzionava, il risultato è questo...funziona, ma è incompleto...
    -1° problema: se clicco più volte su qualsiasi pulsante l'swf esterno che richiamo si carica continuamente sopra (come si fa a dirgli...se l'swf è già sullo stage non caricarlo più!)
    -2° problema: c'è un "addChild", ma non un "removeChild"(se lo metto dopo l'addChild nn mi carica niente!) e quindi gli .swf si sovrappongono e non vengono scaricati......
    come posso fare??

    Codice PHP:
    A.addEventListener(MouseEvent.CLICKclickHandler); 
    B.addEventListener(MouseEvent.CLICKclickHandler); 
    C.addEventListener(MouseEvent.CLICKclickHandler); 
    D.addEventListener(MouseEvent.CLICKclickHandler); 
    function 
    clickHandler(event:MouseEvent):void {     
          switch (
    event.target) {         
                case 
    :             
                    var 
    l1:Loader = new Loader();             
                     
    l1.load(new URLRequest("1.swf"));             
                     
    addChild(l1);             
                     break;         
                 case 
    :             
                     var 
    l2:Loader = new Loader();             
                     
    l2.load(new URLRequest("2.swf"));             
                     
    addChild(l2);             
                     break;         
                 case 
    :             
                     var 
    l3:Loader = new Loader();             
                     
    l3.load(new URLRequest("3.swf"));             
                     
    addChild(l3);             
                     break;         
                 case 
    :             
                     var 
    l4:Loader = new Loader();             
                     
    l4.load(new URLRequest("4.swf"));             
                     
    addChild(l4);             
                     break;     
     } 


  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    29
    Non sò come ma ho risolto...e nel caso potesse essere utile a qualcuno
    posto il codice (ovviamente il problema è indicato all'inizio del tread..
    --------------------------------------
    import flash.display.Loader;
    import flash.net.URLRequest;
    import flash.events.MouseEvent;

    var loader = new Loader();
    var swfFile:String = new String();
    swfFile = "test2.swf";
    var req:URLRequest = new URLRequest(swfFile);
    loader.load(req);


    A.addEventListener(MouseEvent.MOUSE_UP,menuRelease );
    B.addEventListener(MouseEvent.MOUSE_UP,menuRelease );
    C.addEventListener(MouseEvent.MOUSE_UP,menuRelease );
    D.addEventListener(MouseEvent.MOUSE_UP,menuRelease );

    function menuRelease(e:Event):void {

    if (e.target.name == "A") {
    swfFile = "1.swf";
    } else if (e.target.name == "B") {
    swfFile = "2.swf";
    } else if (e.target.name == "C") {
    swfFile = "3.swf";
    } else if (e.target.name == "D") {
    swfFile = "4.swf";
    } else {

    }
    req = new URLRequest(swfFile);
    loader.load(req);
    addChildAt(loader,0);
    }

    ----------------------------------
    In ogni caso, correzioni e "purificazioni" del codice sono ben accette!!

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Caspita, hai scritto un sacco di roba, mi devo rimettere in pari con i post

    Allora, il codice funziona in questo modo, in pratica ti basta un loader e non devi creare un nuovo loader per ogni caricamento esterno, poichè la nuova richiesta di caricamento determina lo scaricamento del filmato precedente.
    Inoltre non hai bisogno di fare nessun nuovo addChild nè hai bisogno di fare un removeChild, perchè una volta che il loader è stato aggiunto alla lista di visualizzazione, rimane lì.
    Riguardo al caricamento ad oltranza ti consiglio di disabilitare di volta in volta il pulsante che ha avviato il caricamento, così se tenti di ricliccare sullo stesso, non ci sarà effetto.

    Detto tutto, ti consiglio di usare questo codice che ho modificato tenendo presente il tuo ultimo codice che ti funziona (avevo omesso nel caricamento l'uso dell'URLRequest).
    Codice PHP:
    var cliccato;
    var 
    loader:Loader addChild(new Loader()) as Loader;
    A.addEventListener(MouseEvent.CLICKclickHandler);
    B.addEventListener(MouseEvent.CLICKclickHandler);
    C.addEventListener(MouseEvent.CLICKclickHandler);
    D.addEventListener(MouseEvent.CLICKclickHandler);
    function 
    clickHandler (event:MouseEvent) {
        
    event.target.enabled false;
        
    cliccato.enabled true;
        
    cliccato event.target;
        switch (
    event.target) {
            case 
    A:
                
    loader.load(new URLRequest("1.swf"));
                break;
            case 
    B:
                
    loader.load(new URLRequest("2.swf"));
                break;
            case 
    C:
                
    loader.load(new URLRequest("3.swf"));
                break;
            case 
    D:
                
    loader.load(new URLRequest("4.swf"));
                break;
        }

    L'unica cosa che manca, ma che non avevi richiesto, è quel caricamento iniziale che fai fare nel codice di "test2.swf"

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    29
    Come al solito.....grazie...
    Ho provato il "nuovo"codice, ma mi da errore :

    TypeError: Error #1010: Un termine risulta undefined e non ha proprietà.
    at test3_fla::MainTimeline/clickHandler()

    da cosa dipende?

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Penso che dipenda da "cliccato", che in un primo momento non esiste e perciò quando si cerca di impostare la sua proprietà "enabled", restituisce un errore.
    Perdona se vado a tentoni, ma non ho la possibilità di provare, il flash è sul portatile che è attualmente semidefunto

    Proviamo così
    Codice PHP:
    var cliccato;
    var 
    loader:Loader addChild(new Loader()) as Loader;
    A.addEventListener(MouseEvent.CLICKclickHandler);
    B.addEventListener(MouseEvent.CLICKclickHandler);
    C.addEventListener(MouseEvent.CLICKclickHandler);
    D.addEventListener(MouseEvent.CLICKclickHandler);
    function 
    clickHandler (event:MouseEvent) {
        
    event.target.enabled false;
        try {
            
    cliccato.enabled true;
        } catch (
    e) {}
        
    cliccato event.target;
        switch (
    event.target) {
            case 
    A:
                
    loader.load(new URLRequest("1.swf"));
                break;
            case 
    B:
                
    loader.load(new URLRequest("2.swf"));
                break;
            case 
    C:
                
    loader.load(new URLRequest("3.swf"));
                break;
            case 
    D:
                
    loader.load(new URLRequest("4.swf"));
                break;
        }


  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    29
    Grande......appena provato e funzia alla perfezione
    Come al solito...grazie 1000!

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    605
    ciao a tutti,
    riapro sto post perchè sto porvando questo codice ma porprio non mi và!
    premetto che sono alle prime armi con as3 (vabbe non è che ero manco un genio con as2 )
    però qualcosina la facevo...

    ora il codice farebbe proprio al mio.. caso visto che ho un menu e che devo caricare le varie sezioni come swf esterni.

    Allinizio il sito si apre ed al 10 fram ho creato un movie clip ed dentro sul primo frame o messo questo codice.


    var richiesta:URLRequest=new URLRequest("1.swf");
    var loader:Loader=new Loader();
    loader.contentLoaderInfo.addEventListener(Event.CO MPLETE,SWFCompletato);
    loader.load(richiesta);

    function SWFCompletato(evento:Event):void
    {
    addChild(evento.target.loader);
    evento.target.removeEventListener(Event.COMPLETE, SWFCompletato);
    }


    e mi carica l'swf...
    ma come dicevo fuori da questo movie clip ho i miei pulsanti A B C D,
    posso utilizzare questo codice per dire che deve caricare tutto all'interno di quel movie clip centrale a seconda del pulsante che clicco, o devo fare tanti mc per quanti pulsanti??
    a dir la verità o provato antrambe le cose, ma senza successo
    un suggerimento o consiglio? forse lo sto impostando porrio male?
    grazie mille
    Giuseppe

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.