le scope du callback onLoad est celui de l'objet appelant, soit Fichier_xml.
applique un Delegate pour forcer le scope sur _level0.
soit :
Code :
- import mx.utils.Delegate;
- ...
- Fichier_xml.onLoad = Delegate.create( this , onXMLLoad );
|
avec onXMLLoad ton callback actuel, déclaré cette fois comme fonction proprement (sur un calque à part, par exemple).
les constructions du type :
Code :
- xml.onLoad = function():Void {};
- bt.onRelease = function():Void {};
|
sont à proscrire. Ca s'appelle une "déclaration de fonction inline", c'est de l'AS1, et ça bousille le scope. Ces constructions se trouvent dans 95% des tutos que tu trouveras sur le Web, elles se sont généralisées parce qu'elles figurent dans l'aide de Flash sur beaucoup d'exemples. Dans la vraie vie, c'est une technique utilisée à titre exceptionnel pour accélèrer l'écriture du code (genre, pour écrire un exemple sur une page d'aide), mais c'est pas comme ça qu'on fait : on fait des classes, et/ou des Delegate.
Message édité par craps_youpla le 15-04-2007 à 12:10:44