begin process at 2012 05 27 15:21:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

Optimisation code AS3 pour Garbage Collector


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Optimisation code AS3 pour Garbage Collector

vendredi 23 octobre 2009 à 09:50:22 | Optimisation code AS3 pour Garbage Collector

Orange73

Membre Club
Hello,

J'aurai juste quelques question afin d'optimiser mon code AS3 pour le passage du Garbage Collector.

1/ Imaginons une classe :
Code ActionScript :
package 
{
     import flash.events.*;
     public MyClass extends Movieclip()
     {
          private var myClip:Sprite;
          public function MyClass()
          {
               myClip = new Sprite();
               addChild(myClip);
               myClip.addEventListener(MouseEvent.CLICK, clicking);
          }
     }
}


Puis une instanciation

Code ActionScript :
import MyClass;
var o:MyClass = new MyClass();
addChild(o);


Si je fais un removeChild(o) puis un o = null, dois-je au préalable appeler une fonction dans ma classe MyClass qui fera :

Code ActionScript :
removeChild(myClip)
removeEventListener(MouseEvent.CLICK, clicking)
myClip = null


???

Ou le fait de faire un removeChild() de l'instance de mon objet suffit ?

Merci

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)

vendredi 23 octobre 2009 à 11:51:09 | Re : Optimisation code AS3 pour Garbage Collector

pegase31

Membre Club Administrateur CodeS-SourceS
Bonjour

Il faut effectivement virer tout les écouteurs inhérents a la classe. Pour celà il existe un évènement "Removed_From_Stage" qui peut être utile.

Peg'
vendredi 23 octobre 2009 à 12:19:54 | Re : Optimisation code AS3 pour Garbage Collector

Orange73

Membre Club
Ok merci.

Mais si je fais un

Code ActionScript :
removeChild(o);


je n'ai pas besoin de faire un

Code ActionScript :
removeChild(myClip) 


dans la classe car forcement si je vire l'instance sur le stage, les instance dans mon objet sont automatiquement virer, non ?


Code ActionScript :
removeChild(o);


mon objet est retiré de la scene


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)

vendredi 23 octobre 2009 à 12:55:55 | Re : Optimisation code AS3 pour Garbage Collector

pegase31

Membre Club Administrateur CodeS-SourceS
De la scène, oui, mais pas de la mémoire ...
Et si un evènement se passe encore dans le clip, il ne sera pas retiré de la mémoire pour autant. Même avec un "null" à la place.

Peg'
samedi 24 octobre 2009 à 05:07:39 | Re : Optimisation code AS3 pour Garbage Collector

samsam69003

il faudrait regarder le livre de Mr Thibault Imbert sur le sujet .. (si quelqu'un arrive à comprendre... (déssssolé , mais j'ai du mal pour ma part . )
=> http://pratiqueactionscript3.bytearray.org/?page_id=4

vers le début du livre il traite le sujet , l'auteur maitrise le sujet .
mercredi 28 octobre 2009 à 06:21:31 | Re : Optimisation code AS3 pour Garbage Collector

Twinspirit

J'essaie de toujours rédiger mes functions comme suit :
Code ActionScript :
package
{
	//imports
	public class myClass extends Sprite //par exemple
	{
		//declarations variables
		public function myClass()
		{
			this.addEventListener(Event.ADDED_TO_STAGE, initialize);
		}
		
		public function initialize(evt:Event)
		{
			this.addEventListener(Event.REMOVED_FROM_STAGE, destruct);
		}
		
		public function destruct(evt:Event)
		{
			this.removeEventListener(Event.REMOVED_FROM_STAGE, destruct);
			this.removeEventListener(Event.ADDED_TO_STAGE, initialize);
			//et remove de tout autre listener en ecoute dans la classe
		}
	}
}


C'est ce que préconise T.Imbert, je crois.

TwFlash - Développeur ActionScript3 freelance.
Mon blog : Twin Flash Blog
Mon site : TwFlash
mercredi 28 octobre 2009 à 14:37:55 | Re : Optimisation code AS3 pour Garbage Collector

zen69

Twinspirit, jolie ce code!


---------------------------------------------------------
Julien B.
lundi 2 novembre 2009 à 23:47:20 | Re : Optimisation code AS3 pour Garbage Collector

Orange73

Membre Club
Merci :)

et si je remplace le addChild() dans ma classe :

public function MyClass()
{
myClip = new Sprite();
addChild(myClip);
myClip.addEventListener(MouseEvent.CLICK, clicking);
}

par

...
// clipContainer est un clip présent sur la scène.
clipContainer.addChild(myClip);
...

Dois-je faire un removeChild du clip "myClip" dans "clipContainer" dès que je removeChild l'instance de ma classe afin de permettre le passage du garbage collector ?


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)

mardi 3 novembre 2009 à 00:34:12 | Re : Optimisation code AS3 pour Garbage Collector

Twinspirit


Si dans ta classe d'affichage, tu as bien prévu une fonction de désactivation en cas de retrait de l'objet de la scène (la function destruct dans mon code plus haut, par exemple), celle-ci sera activée en cas de retrait de l'objet ou du conteneur de l'objet.

Les écouteurs contractés par myClip seront automatiquement désactivés en interne grâce à la fonction destruct... myClip devrait être eligible au garbage collector. (sous réserve qu'aucune variable ne pointe sur lui et qu'aucun écouteur n'ai été contracté en externe.)

TwFlash - Développeur ActionScript3 freelance.
Mon blog : Twin Flash Blog
Mon site : TwFlash
mercredi 4 novembre 2009 à 19:36:11 | Re : Optimisation code AS3 pour Garbage Collector

Orange73

Membre Club
Donc pas besoin de faire un removeChild de myClip dans la classe ? ni de le mettre a null ? mais simplement virer les evenements ?


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)


1 2 3 4 5

Cette discussion est classée dans : code, garbage, myclass, myclip, as3


Répondre à ce message

Sujets en rapport avec ce message

Garbage Collector [ par Orange73 ] Hello, Juste une question pour savoir si on est conseillé d'utiliser le garbage collector ? Exemple : [code=as] function changeSection(e:MouseEvent) [AS3] Création dynamique de boutons et de leur écouteur respectif [ par vedelvetsyn ] Encore un problème... j'entendais souvent que l'AS3 c'était super fastidieux, mais j'imaginais pas autant [^^happy17] Mais c'est sympa de se prendre l Bouton qui ne réagis pas maglré code AS3 [ par ayouns ] Salut, Voila j'ai fait un bouton en clip le tout en AS3 quand je code pas les "function" je vois très bien mon animation voulu comme bouton. Mais de Evènement click sur une occurrence clip AS3 [ par AOE_angelofdarkness ] Bonjour tout le monde, Je me mets petit à petit à l'AS3 et forcement je rencontre quelques difficultés. Je voudrais savoir s'il est possible de créer Passage d'AS2 à AS3, intéressant ou pas ? [ par Phogre ] Bonjour à tous ! Il y a un an, j'ai eu envie de créer un jeu en flash. Ne trouvant aucun tutoriel pour débutant, j'ai essayé de comprendre des bouts [ FlashCS4 / AS3 / XML ] Gestion d'une base XML et boucles ... [ par vedelvetsyn ] Bonjour, j'ai une question pour des connaisseurs en [ FlashCS4 / AS3 / XML ]. Le but final est d'obtenir un bouton qui lorsqu'on cliquera dessus, la Flash - as3 [ par ytrez4 ] ytrez4 Bonjour à tous... Je développe actuellement un projet perso.. un site Portfolio en Full Flash.. Hélas Probléme........ J'aimerai savoir comme équivalent de ce code AS2 en AS3 : this["nom"+i] [ par piere2 ] Bonjour, Je débute en AS3 et j'essaye d'avancer avec mes acquis AS2; je rame pas mal.... J'utilisais souvent ce code pour définir des action ou des va [AS3] Gestion de carractères dans un KeybordEvent [ par vedelvetsyn ] Bonjour, Voila la situation : [code=as] zoneIpunt.addEventListener(KeyboardEvent.KEY_DOWN, retourInput); function retourInput(evt:KeyboardEvent):voi [AS3 / PHP] Exporter une variable ... [ par vedelvetsyn ] Mon problème est simple a expliquer. J'ai des variables issues d'un formulaire Flash, et je veux les exporter sur ma page PHP ... J'ai tenté d'appli


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,420 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales