Flash: comment initialiser des composants dans le constructeur d'une classe

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.

Exemple 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.

2 commentaires à "Flash: comment initialiser des composants dans le constructeur d'une classe"

  1. 7 novembre 2007 Giovambattista Fazioli :

    Evidemment la même chose est valable pour l'événement unload () ;)

  2. 19 décembre 2007 undolog »Blog Archive» Flash CS3: La gestion des événements nouveaux :

    [...] 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: [...]

Laisser un commentaire

XHTML TAG PERMIS: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CODE D'INSERTION:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL