Lorsque estent une classe à partir d'un MovieClip qu'il contient d'autres objets (MovieClip, TextField, etc ...) ils ne peuvent être «prêt» au sein du constructeur. Cela arrive surtout quand les autres en utilisant des composants de MovieClip ou étendu (contrôles) de Flash. Pour résoudre le problème il suffit d'utiliser l'événement onLoad héritée de la classe elle-même. Par exemple, imaginez que vous avez un MovieClip qui contient un TextField (internes objet statique visuelle dans Flash) et un objet TextInput (inséré composants du panneau de contrôle) et que vous voulez définir certaines propriétés dans le constructeur de notre classe MyClass.
Nous créons un symbole et l'insérer dans l'objet TextField est (appelons text_txt) est l'objet (textinput_txt) TextInput. Nous associons à ce symbole pour une classe qui étend MovieClip, appelez notre classe MyClass. Ce que nous obtenons est que pendant le constructeur de notre classe MyClass ces deux contrôles sont initialisés. Si nous essayons d'utiliser un code comme ceci:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | / / controls . TextInput ; l'importation mx contrôles TextInput..; / / MovieClip { classe MyClass étend MovieClip { / / text_txt : TextField ; private var text_txt: TextField ; textinput_txt : TextInput ; private var textinput_txt: TextInput; / / function MaClasse () { "MiaClasse::costruttore" ) ; trace ("MaClasse:: constructeur»); / / = "Ciao" ; . text_txt text = "Bonjour"; = "Ciao" ; . textinput_txt text = "Bonjour"; / / } } |
Qu'est-ce otteremo ne contrôle l'initialisation de l'objet TextField! Mais si nous essayons d'utiliser l'événement onLoad hérité de super classe MovieClip:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | / / controls . TextInput ; l'importation mx contrôles TextInput..; / / MovieClip { classe MyClass étend MovieClip { / / text_txt : TextField ; private var text_txt: TextField ; textinput_txt : TextInput ; private var textinput_txt: TextInput; / / function MaClasse () { "MiaClasse::costruttore" ) ; trace ("MaClasse:: constructeur»); / / = "Ciao" ; . text_txt text = "Bonjour"; / / onLoad = _onLoad; } / / _onLoad ( ) { _onLoad fonction privée () { = "Ciao" ; . textinput_txt text = "Bonjour"; } } |
Dans ce cas, la chaîne "Bonjour" sera visible sur TextField qui est sur le TextInput. se preferite) utilizzata per eseguire tutte le inizializzazioni del caso, comprese quelle che normalmente inseriremo – con successo – nel costruttore. Une règle générale, par conséquent, lorsque vous avez des composants et autres MovieClip «produits dérivés», serait de toujours brancher le constructeur un pointeur à une fonction privée _onLoad() (ou init() si vous préférez) utilisé pour effectuer toutes initialisation nécessaires y compris celles qui normalement insérer - avec succès - dans le constructeur.










Evidemment la même chose est valable pour l'événement unload ()
[...] La solution proposée en flash: comment initialiser des composants dans le constructeur d'une classe, par exemple, les résultats dans ActionScript 3.0 est la suivante: Actionscript TEXTE CLAIR: [...]