samedi 24 décembre 2005
isLivePreview et onLoad mais quand va t'on s'arreter bon sang !!
Par mama, samedi 24 décembre 2005 à 15:30 :: Flash
Il y a quelques temps j'étais confronté à l'execution de code au sein de la fonction constructeur de mes composants au moment ou je les glissais sur la scène. C'est evidemment un gros soucis.
Pour eviter ca, Macromedia a inventé la propriété isLivePreview, quand cette propriété est true c'est qu'on est dans le cas d'une utilisation dans l'environnement auteur et donc dans ce cas on ne veut pas executer le code contenu dans le composant. Le problème est que isLivePreview est indéfini quand on glisse le premier composant sur la scène (après ca va). Ce qui au final génère toujours le même problème.
Récemment j'ai découvert le onLoad AS2 (whaaa la honte.... oui bon ok ca va), tout content me voila avec une belle solution bien propre car dans le onLoad, le isLivePreview est défini. Je commence donc a basculer le code de ma fonction constructeur dans le onLoad, grace à ca le tour est joué.... normalement....
Le gros problème auquel je n'avais pas pensé c'est que lorsque je ne glisse pas un composant sur la scène mais que je l'attache et que dans la même image j'apelle une méthode de cette instance, cette méthode s'éxecute AVANT le onLoad, et donc avant le code censé initialiser proprement mon instance de composant.
var lBob = this.attachMovie("idComposant","monComposant",0); lBob.init();
ordre d'execution:
- fonction constructeur
- init
- onLoad
En conclusion, onLoad c'est bien mais faut pas exagérer.... La solution permettant de résoudre mon problème reste donc celle-ci.