Je veux que le mc soit supprimé avec tous ses minuteurs, événements, ... Y at-il un moyen simple de faire cela?Comment supprimer complètement un MovieClip dans AS3
Répondre
Bien sûr ... annule l'enregistrement de ses minuteurs et de ses événements, supprime-le de son parent et supprime toutes les références.
En d'autres termes, AS3 est un langage collecté par garbage, donc vous ne pouvez pas contrôler quand un objet (y compris un MC) est vraiment supprimé de la mémoire. Lorsque vous supprimez toutes les références (y compris l'enregistrement d'un événement), le CPG détecte qu'il n'est plus nécessaire et le nettoie pour vous.
Une chose que vous pouvez (et devez) faire est, lorsque vous vous enregistrez pour des événements, réglez le paramètre useWeakReference
sur true
. C'est:
myMC.addEventListener(Event.ENTER_FRAME, onFrame, false, 0, true);
Cela dit AS3 que cet écouteur d'événement particulier ne doit pas compter comme une référence - donc si vous supprimez toutes les autres références à la MC, il va obtenir les déchets ramassés même si vous ne désenregistrez pas l'auditeur . (Quant aux timers, si vous utilisez setTimeout ou setInterval, pour autant que je sache, ils ne sont pas non plus considérés comme des références, mais je n'en suis pas sûr.)
Donc, le long et le court , il n'y a aucun moyen de nuke votre MC et obtenir Flash pour tout nettoyer. C'est ainsi que fonctionne AS3 - la gestion de vos références et de vos événements fait partie d'un codage consciencieux. Si votre MC n'a plus de minuteries ou d'événements, est retiré de son parent, et n'est référencé par aucune partie de votre code, c'est quand il est parti.
Loader.unloadAndStop()
cité http://www.gskinner.com/blog/archives/2008/07/additional_info.html:
Voici la liste des choses qui ne unloadAndStop pour préparer les fonds souverains chargés de la collecte:
- Arrête tous MovieClips
- Arrêts tous les sons en cours de lecture/diffusion
- Arrêter/supprimer tous les objets Minuterie
- Supprimer tous les programmes d'écoute pour enterFrame, exitFrame, frameconstructed, activate, deactivate
- Supprime tous les écouteurs d'étape créés par l'enfant.
- tous NetConnection Ferme/NetStream
- Video.attachNetStream/attachCamera (0)
- Microphone.setLoopback (0)
- polices AS3 Supprime de la table globale de polices
- Arrête prises, XMLSockets, téléchargements FileReference, le téléchargement d'autres objets (petits SWF), etc.
- Libère bitmap lié à cacheAsBitmap/filtre, etc.
noter que tous les ab ove sont exécutées de manière récursive, de sorte qu'ils s'appliquent également à tous les enfants imbriqués, y compris les autres fichiers SWF chargés.
J'ai vu certains événements, en particulier les événements Timer, ne pas se déclencher lorsque useWeakReference
est défini sur true. Alors, soyez prudent avec la suggestion de fenomas.Je crée généralement une fonction dealloc dans mes MovieClips et addEventListener(Event.REMOVED_FROM_STAGE, dealloc);
La fonction dealloc se déclenche lorsque vous removeChild()
ce MovieClip.
Il est recommandé de prendre soin de ces données soi-même avec Flash, en particulier lorsqu'il existe des incohérences qui apparaissent plus souvent que nous le souhaiterions.
Jeremy, pour éviter que vos événements ne se déclenchent, assurez-vous que votre article contient une référence quelque part.
E.G. Je fait une classe de préchargement qui est appelée à partir de la ligne de temps de la racine à l'image 1 de commande:
new PreLoader(root);
A ce stade, il n'y a pas de référence externe au préchargement, et tout _rootClip.loaderInfo.addEventListener (ProgressEvent.PROGRESS, fn) échouerait. (_rootClip est une propriété de ma classe PreLoader et sa racine est passée en paramètre). Ce que j'ai fait est simple: depuis que je fais un clip pour la barre de chargement, et j'ajoute ce MovieClip à la racine, ce MovieClip a une référence. Je viens de faire myMC.preloader = this;
pour référencer mon préchargeur et empêcher la suppression de mes événements. Dès que j'ai terminé le préchargement, un simple _rootClip.removeChild(myMC);
supprime tout :)
- 1. Comment supprimer une identité complètement
- 2. Comment supprimer l'enfant (Movieclip) et ajouter au nouveau parent (Movieclip)
- 3. Comment accéder à un autre Movieclip à partir d'un Movieclip en utilisant AS3?
- 4. Comment supprimer complètement la table initiale dans Android
- 5. Ajouter MovieClips (et les contrôle) dans un DataGrid en AS3
- 6. Comment savoir si un objet est dynamique dans AS3
- 7. Flash AS3 - comment régler Importé movieclip de champ de texte comme non sélectionnable
- 8. Comment savoir dans Ruby si un fichier est complètement téléchargé
- 9. Dans Flash: gotoAndStop et emboîtés MovieClip émet
- 10. as3 - contrôler le scintillement lors de la mise à l'échelle d'un bouton ou d'un MovieClip
- 11. Classe AS3 pour un symbole Flash
- 12. Comment animer un objet d'affichage dans un arc en AS3?
- 13. Comment convertir un MovieClip Flash en séquence png?
- 14. Silverlight ItemsControl. Pouvez-vous supprimer complètement le panneau via un modèle?
- 15. AS3 - Garder un tableau clairsemé
- 16. duplication MovieClip dans FlashLite et AS2
- 17. Comment puis-je complètement amorcer un environnement de grails?
- 18. AS3 - comment recommencer un film flash
- 19. Comment puis-je implémenter un contrôle draggable complètement personnalisé?
- 20. Comment charger dynamiquement un Movieclip dans Flash CS4 et partager des informations avec un framework?
- 21. Cloner MovieClip en temps réel
- 22. Matrice défectueuse pour renverser (réflexion miroir) un MovieClip
- 23. Zone de texte arrondie AS3
- 24. Comment analyser un fichier .as (AS3)
- 25. Comment ajouter un contour au texte dans AS3?
- 26. Puis-je forcer complètement un check-in à TFS?
- 27. Comment supprimer un objet enfant dans NHibernate?
- 28. Comment supprimer un fichier dans RCS?
- 29. Comment supprimer un contact programme dans Android
- 30. Comment supprimer un bloc entier dans Vim?
Notez que ceci est uniquement pour les swfs chargés, pas pour les MovieClips. – Cay