2010-01-23 5 views
1

J'utilise Loader::load() avec succès pour charger swfs dans mon swf principal et puis je les ajoute comme un enfant d'un Sprite. Lorsque d'autres événements se produisent, je souhaite supprimer les swfs au besoin. J'ai regardé unload() et au removeChildAt() sans succès.Déchargement swfs chargé avec Loader :: load()

J'ai seulement ajouté l'appel addChild() pour essayer de bloquer l'instance chargée afin que je puisse l'enlever. J'ai également essayé de publier sur le lecteur v.10 et d'utiliser myLoader.unloadAndStop(); mais cela n'a aucun effet non plus;

Le code de démonstration suivant montre mon problème. Je vois un enfant ajouté et un enlevé mais intro.swf joue encore.

import flash.display.Loader; 
import flash.display.Sprite; 
import flash.display.LoaderInfo; 
import flash.net.URLRequest; 

var myLoader:Loader = new Loader(); 
var holderMC:Sprite = new Sprite(); 
var myRequest:URLRequest = new URLRequest('intro.swf'); 

myLoader.load(myRequest); 
holderMC.addChild(myLoader); 
trace("initial:"+holderMC.numChildren); // traces initial:1 

while(holderMC.numChildren > 0) { 
holderMC.removeChildAt(0); 
trace("now there are:"+holderMC.numChildren); // traces now there are :0 
} 
myLoader.unload(); 

// Modifier - aussi essayé:

myLoader.unloadAndStop(); 
myLoader = null; 

Toute pensée?

Répondre

3

Vous avez certainement quelque chose d'autre qui se passe ici. Premièrement, comment voyez-vous le "intro.swf"? Vous créez un supportMC et ajoutez le swf chargé en tant qu'enfant, mais à quel moment ajoutez-vous holderMC à la liste d'affichage?

La bonne façon de retirer un film de la vue serait:

holderMC.removeChild(myLoader); 

Afin de laisser le contenu de holderMC à la collecte de battant pavillon des déchets dont vous avez besoin de le mettre à null. Ainsi,

holderMC.removeChild(myLoader); 
myLoader.unload(); // this will set the content (the movie itself) to null. 
myLoader = null; // npw the loader can be garbage collected too 

Si vous faites un removeChild et il est toujours affiché, alors vous devrez poster plus de code pour montrer où le problème est vraiment.

+0

Merci pour votre réponse! Je * pense * que le problème résidait dans le fait que je convertissais un ancien fichier AS2 en AS3 et quand j'ai commencé avec un nouveau fichier et que j'ai utilisé votre conseil, le problème a été résolu. Merci! – jerrygarciuh