Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox
En cours

AddFrameScript deux trois choses à savoir

Par Nataly, le 30 juin 2010

On l'a dit et répété, la méthode addFrameScript n'est pas documentée. J'ai donc pris le temps d'observer son comportement, et voici les conclusions surprenantes auxquelles je suis arrivée :

Ajouter du script image courante ou postérieure

:arrow: Ajouter du script à l'image courante :

Arrêtée par un stop() la fonction est exécutée.
Arrêtée par un gotAndStop() la fonction est pas exécutée.

:arrow: Ajouter du script à une image postérieure à l'image courante :
Si un script a déjà été ajouté sur l'image courante, il sera, dans tous les cas à nouveau exécuté.

Par exemple

Ici, le clip est arrêté image 1 (zéro donc ds addFrameScript).

Exemple 1 - La fonction demo0 est exécutée deux fois :

		public function DemoAddFrameScript(pClip:MovieClip):void {
			leClip=pClip;
 
			trace("avec stop");
			leClip.stop();
			trace("--> addFrame 0");
			leClip.addFrameScript(0,demo0);
			trace("--> addFrame 10");
			leClip.addFrameScript(10,demo10);
avec stop
--> addFrame 0
--> addFrame 10
passe demo 0
passe demo 0

• une fois parce que leClip.stop() ET leClip.addFrameScript(0,demo0);
• une deuxième fois à cause de leClip.addFrameScript(10,demo10); (image postérieure à l'image courante)

Exemple 2 - La fonction demo0 est exécutée une fois :

			trace("avec gotoAndStop");
			leClip.gotoAndStop(1);
			trace("--> addFrame 0");
			leClip.addFrameScript(0,demo0);
			trace("--> addFrame 10");
			leClip.addFrameScript(10,demo10);
avec gotoAndStop
--> addFrame 0
--> addFrame 10
passe demo 0

Le gotoAndStop prévient l'appel de la fonction par la ligne leClip.addFrameScript(0,demo0);, mais la ligne leClip.addFrameScript(10,demo10); (qui ajoute du code sur une image postérieure) le déclenche.

Exemple 3 - La fonction demo0 n'est pas exécutée :

			trace("avec gotoAndStop");
			leClip.gotoAndStop(1);
			trace("--> addFrame 10");
			leClip.addFrameScript(10,demo10);
			trace("--> addFrame 0");
			leClip.addFrameScript(0,demo0);
avec gotoAndStop
--> addFrame 10
--> addFrame 0

… puisque la ligne leClip.addFrameScript(10,demo10); est avant celle qui ajoute une fonction image 1 et qu'on utilise gotoAndStop().