Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di daem
    Registrato dal
    Oct 2000
    Messaggi
    199

    unload da un swf all'altro AS3

    Con gran ritardo passo dal vecchio as2 a as3 e incontro il primo grande (per me) problema:
    Ho un filmato contenitore che mi carica due filmati. Il primo (overlay.swf) lo carica e lo visualizza subito, il secondo (component.swf) solo se si clicca su un pulsante. Fin qui riesco a far funzionare tutto con il seguente codice

    Codice PHP:
    var loader:Loader = new Loader();
    loader.load(new URLRequest("overlay.swf"));
    addChildAt(loader0);
    addChildAt(btn_mc1);
    btn_mc.addEventListener(MouseEvent.CLICKonClick);
    function 
    onClick(evt:MouseEvent):void {
    btn_mc.visible=false;
    loader.unload();
    loader.load(new URLRequest("component.swf"));

    Il problema è che il primo filmato (overlay.swf) ha un'animazione che alla fine deve caricare comunque il secondo filmato (component.swf) anche se non si è cliccato sul pulsante (btn_mc).
    Come faccio a fare questa cosa? Cosa devo mettere all'interno di overlay.swf? Con AS2 avrei fatto un _level0 o qualche parent e sarei riuscito a risalire all'swf caricato e poi caricarne un altro ma qui ho qualche problema.
    Spero di essere stato chiaro e ringrazio in anticipo per l'aiuto.

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Non è complesso, ma bisognerebbe fare una lunga considerazione sul modo in cui le timeline vengono lette nel nuovo sistema di visualizzazione che si è venuto a creare con AS3.
    Intanto ogni filmato ha la sua timeline principale e a questa fa capo la proprietà root raggiungibile da ogni oggetto di visualizzazione presente sullo stage.
    Nel caso di un swf caricato dall'esterno, per riuscire a raggiungere la timeline principale è necessario risalire di almeno un paio di "parent" a partire dal filmato caricato (il primo parent è il loader ossia l'oggetto che ha caricato il filmato, il secondo parent è quello del loader, che secondo il tuo codice dovrebbe essere proprio root, quindi

    var main:MovieClip = this.parent.parent as MovieClip;

    e così dovresti essere sulla timeline principale.

    Ovviamente se a te serve solo il loader, per caricarci sopra l'altro filmato, la cosa sarà ancora più semplice, perchè dovrai fermarti solo al primo parent

    var loader:Loader = this.parent as Loader;
    loader.load(new URLRequest("component.swf"));

    Ah se carichi un filmato al posto dell'altro (usando load) non è necessario usare unload().

  3. #3
    Utente di HTML.it L'avatar di daem
    Registrato dal
    Oct 2000
    Messaggi
    199
    Ti ringrazio tanto per la veloce e precisa risposta. Sei stato chiarissimo.
    Mi sa che devo proprio cambiare la mentalità di costruzione... ma la tua spiegazione mi ha chiarito la "gerarchia" di visualizzazione.
    Adesso è ora di studiare un po'... ;-)

    Grazie ancora

    P.S inutile dire che ora funziona tutto...

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.