AddFrameScript deux trois choses à savoir
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
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.
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().
