Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    As3 gestine caricamento display remove unload

    Ciao.
    Qual'è il migliore metodo per gestire il
    caricamento dinamico di file swf ?
    Al momento la mia idea è questa
    (swf da 50K a 200K max)
    load (carico)
    addChild (aggiungo a Stage magari con un visible=falso)
    swapChildren (visualizzazione o visible=true)

    ma da una prima ricerca
    il consiglio è questo
    load (carico)
    addChild (visualizzazione)
    removeChildren (rimuovo)
    unload

    ma così non perdo la cache ?

    Capirei la seconda via in caso di swf
    che consumano
    molto memoria ma nel mio caso
    si tratta per lo + di semplice testo
    e immagini.

    insomma vorrei il vs parere


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Non perdi la cache perchè è indipendente dal codice AS del filmato. Logicamente quando dovrai ricaricare il filmato esterno, dovrai rifare i passi di caricamento e di visualizzazione del Loader.
    Ci sarebbe un modo più lineare di lavorare, usando il loader solo per caricare il filmato esterno (quindi usi sempre lo stesso loader) e a fine caricamento spostare la visualizzaizone del filmato esterno su un clip contenitore che lo visualizza.

  3. #3
    Originariamente inviato da and80
    Non perdi la cache perchè è indipendente dal codice AS del filmato. Logicamente quando dovrai ricaricare il filmato esterno, dovrai rifare i passi di caricamento e di visualizzazione del Loader.
    Ok problemi non ce ne dovrebbero essere
    visto che i files swf sono caricati tramite
    una classe DataLoader a cui passo il path.
    Faresti gestire l'unload a quest'ultima ?
    La visualizzazione è fatta dalla Main
    è giusto ?
    Se fossi così gentile da passarmi qualche links
    sull'argomento as3/cache/swf/ ho le idee un attimo
    confuse al riguardo
    Originariamente inviato da and80
    Ci sarebbe un modo più lineare di lavorare, usando il loader solo per caricare il filmato esterno (quindi usi sempre lo stesso loader) e a fine caricamento spostare la visualizzaizone del filmato esterno su un clip contenitore che lo visualizza.
    Adesso è la main che fa questo lavoro
    Dovrei creare una movie clip o Sprite
    nella Main da utilizzare per la visualizzazione ?
    Se hai un semplice esempio anche di pseudo
    code mi fai una cortesia.

    Grazie.

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Un esempio estremamente compatto può essere questo:

    Codice PHP:
    var cont:MovieClip addChild(new MovieClip()) as MovieClip;
    var 
    loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETEcompleteHandler);
    function 
    completeHandler (evt:Event):void {
        try { 
    cont.addChildAt(evt.target.loader.content0); } catch (err:Error) { };
    }

    pulsante1.movieToLoad "primo.swf";
    pulsante2.movieToLoad "secondo.swf";
    pulsante1.addEventListener(MouseEvent.CLICKclickHandler);
    pulsante2.(MouseEvent.CLICKclickHandler);

    function 
    clickHandler (evt:MouseEvent):void {
        if (
    evt.target["movieToLoad"]) loader.load(new URLRequest(evt.target["movieToLoad"]));

    Due pulsanti caricano due filmati diversi, entrambi vengono "aggiunti" a "cont" quando richiamati sostituendo il precedente.

  5. #5
    Grazie per l'esempio.
    Capito il concetto.

    Ho finito per fare così
    Codice PHP:
    private function _onLoadComplete(e:Event) {
                var 
    dataLoader:DataLoadere.target as DataLoader;
                if(
    contains(_container)){
                    
    _container.removeChildAt(0);
                    
    removeChild(_container);
                }
                
    _container.addChild(dataLoader);  
                
    addChild(_container);
            } 
    non mi è chiara ancora una cosa
    in DataLoader ho

    Codice PHP:
    _loader.contentLoaderInfo.addEventListener(Event.UNLOAD_unLoadHandler);
    private function 
    _unLoadHandler(e:Event):void {
                
    removeChildAt(0);
                var 
    loader:Loader e.target.loader as Loader;
                
    loader.unload();
            } 
    quando si scatena Event.UNLOAD ?
    Da un trace che ho messo non vi è
    notizia (pensavo di vederlo a cambio tab)



    PS

    E' giusto il metodo che ho scelto ?
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  6. #6
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Il metodo UNLOAD viene eseguito solo nel momento in cui c'è un'azione di scaricamento di un file caricato in precedenza. Ma chiaramente, se il file non viene scaricato, come nel caso che ti ho presentato, l'evento non verrà mai richiamato. Perciò se vuoi che venga richiamato, l'unica è scaricare il file precedente, prima di caricare il nuovo.

    Nel tuo codice non ho capito perchè prima rimuovi e poi reinserisci il file, ha senso? Cioè perchè fare due azioni in cui una è la negazione dell'altra?

  8. #8
    Originariamente inviato da and80
    Il metodo UNLOAD viene eseguito solo nel momento in cui c'è un'azione di scaricamento di un file caricato in precedenza. Ma chiaramente, se il file non viene scaricato, come nel caso che ti ho presentato, l'evento non verrà mai richiamato. Perciò se vuoi che venga richiamato, l'unica è scaricare il file precedente, prima di caricare il nuovo.

    Nel tuo codice non ho capito perchè prima rimuovi e poi reinserisci il file, ha senso? Cioè perchè fare due azioni in cui una è la negazione dell'altra?
    Ciao.
    Prima di tutto grazie della risposta.
    UNLOAD (il metodo) per quanto ne so toglie l'asset (il file caricato)
    dal loader quindi se il loader aveva 1 children dopo unload
    ne ha 0.
    Visto che la reference porta quell'esempio mi aspetterei
    che al cambio di tab facesse unload.

    [Nel tuo codice non ho capito perchè prima rimuovi e poi reinserisci il file, ha senso? Cioè perchè fare due azioni in cui una è la negazione dell'altra? ]

    Praticamente ho un menu con le varie clip da
    caricare al cambio di tab tolgo l'attuale clip e ne metto un altro
    davo per scontato fosse una pratica comune.

    Scusa se insisto ma come potrai capire è un punto
    che devo assolutamente chiarire prima di consegnare il
    prodotto

    La pratica comune sembra quella da me utilizzata
    in un altro forum è saltato pure fuori questo
    link
    http://www.gskinner.com/blog/archive...onal_info.html


    Aspetto fiducioso





    PS
    La cosa importante che vorrei sapere
    è i vari approcci per questo problema
    se hai links in proposito sono ben accetti.
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  9. #9
    @and80
    Lo so stresso e non è mia abitudine
    ma mi piacerebbe chiudere questo
    thread una volta per tutte.

    Mi accontento di un paio di links
    PP non mi riesce a trovare un esempio


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Il fatto è che non ho capito proprio come il tuo codice funzioni.
    Considera che non esiste una strada sola per ottenere una cosa come i caricamenti esterni su flash. Ci sono alcune sottigliezze che vanno ponderate caso per caso.
    L'unload lo fai se vuoi, ma non è strettamente necessario al di fine di eseguire caricamenti multipli sullo stesso loader.
    La cosa migliore da fare secondo me sarebbe quella di impostare il comportamento da tenere quando il filmato viene scaricato, direttamente sul filmato stesso. Quindi se sai che in quel filmato c'è un enterframe che da fastidio, lo blocchi quando il filmato non viene più visualizzato e così via. Non so se mi sto spiegando bene, fai in modo che sia lo stesso filmato ad autogestirsi.
    A quel punto nel filmato principale potrai pensare di usare l'unload come lo usavi tu facendo il removeChild e successivo addChild. Solo in quel caso la prassi avrebbe un senso.

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.