Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    207

    [AS3] Dubbi su l'eliminazione di displayObject

    Ciao ho dei dubbi su come eliminare i displayObject dalla displayList

    1- Se elimino un DisplayObjectContainer elimino anche eventuali oggetti contenuti?
    2- I metodi removeChild e removeChildAt eliminano definitivamente l'oggeto o continua ad esistere nell'applicazione
    3-Se continua ad esistere come faccio ad eliminarlo definitivamente liberando memoria

    Grazie

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    la display list è il sistema di visualizzazione a video dei tipi DisplayObject, perciò quando usi removeChild e removeChildAt non stai eliminando i DisplayObject, li stai solo togliendo dal "flusso video", ossia, questi elementi rimangono comunque in memoria, seppur non vengano visualizzati
    la guida dice che per eliminarli, basta utilizzare "delete", ma ho fatto qualche tentativo in tal senso e non funziona

    per quanto riguarda il fatto di rimuovere un DisplayObjectContainer dalla display list, questo non rimuove i display child che il contenitore ha al suo interno

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    207
    Ciao è esattamente l'idea che mi sono fatto. Anche io sto provando con il delete ma non mi dà risultati. La cosa mi sembra un problema abbastanza urgente da risolvere, infatti temo che caricando elementi pesanti (immagini grandi, video etc.) il filmato/sistema si rallenti (cosa che mi sta succedendo con uno slideshow).
    Se qualcuno sa qualcosa in merito...

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ho utilizzato diverse immagini, slideshow ecc senza notare rallentamenti di sorta... non è che il problema nel tuo caso dipende da qualcos'altro (intervalli aperti ripetutamente e mai chiusi, enterFrame continui e robe simili)?

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    207
    Effettivamente il colpevole posso essere io...è da poco che mi sto cimentando con as3. Da buon novellino, la prima cosa a cui ho dato la colpa è flash. Mi rimane comunque il dubbio, di come liberare la memoria da oggetti inutilizzati.

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ho verificato sulla guida e seppur ci sia scritto che anche gli oggetti DisplayObject vanno eliminati con delete, non danno uno straccio di codice in cui questo metodo sia utilizzato
    ho verificato anche l'errore che mi da il parser quando esporto il filmato e dice che l'elemento da eliminare deve essere una proprietà di un oggetto, così ho provato a fare in questo modo

    var s:Sprite = new Sprite();
    delete (this.s);

    non c'è più il warning, ma "s" non viene comunque eliminato, tant'è che se faccio un trace subito dopo, mi aspetto di ottenere undefined e ottengo "[object Sprite]"

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    207
    E' la stessa cosa che capita a me.
    In più sto riscontrando questo problema:

    Se faccio:

    delete _arImg[0].getChildAt(i); // _arImg[0] è il riferimento ad uno sprite
    trace(_arImg[0].getChildAt(i));

    il file viene compilato ma il trace mi rende [object etc...]

    se invece scrivo:

    var pippo:Sprite=_arImg[0].getChildAt(i); // _arImg[0] è il riferimento ad uno sprite
    delete pippo;
    trace(_arImg[0].getChildAt(i));

    Il compilatore mi segnala questo errore:

    1189: Tentativo di eliminare la proprietà fissa pippo. Solo le proprietà definite dinamicamente possono essere eliminate.

    Mi chiedo: pippo non dovrebbe essere un riferimento al contenuto di _arImg[0] ?

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    207
    Scusa ho complicato l'esempio con il .getChildAt(i).
    Il problema viene dato anche facendo riferimento direttamente a _arImg[0];

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    stessa cosa, ma non ho proprio trovato nulla sulla guida al riguardo, se non questa frase:
    I metodi removeChild() e removeChildAt() non consentono di eliminare completamente un'istanza di un oggetto di visualizzazione. Essi consentono solo di rimuoverla dall'elenco secondario del contenitore. L'istanza può ancora essere utilizzata come riferimento da un'altra variabile. (Per rimuovere completamente un oggetto, utilizzare l'operatore delete.)
    tratto da questa pagina: http://livedocs.adobe.com/flash/9.0_.../00000148.html

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ho trovato qualche info in più, anche se in inglese e non garantisco di aver capito al 100%,
    comunque in pratica il senso di tutto era di non preoccuparsi delle istanze che non sono inserite dentro una lista di visualizzazione, perchè è il player stesso che dopo un tot (non definito) di tempo, che si occupa di eliminare le variabili inutilizzate fuori dal loro "scope"
    a me da l'idea di una cosa un po' rischiosa quella di lasciar decidere al player, comunque se le cose stanno così, non stiamo sbagliando nulla riguardo alla faccenda

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.