euh perso ca me parrait logique de ne surtout pas utiliser une var
local
quand on veut obtenir une reference a un fichier

une var local n'existe que dans le scope local

une fois que ce scope est fermé on ne peut plus utilisé cette var

avec ca
----
                private function on_click(event : MouseEvent) : void {
                        var file : FileReference = new FileReference
();
                        file.addEventListener(Event.SELECT,
on_select);
                        file.addEventListener(Event.COMPLETE,
is_loaded);
                        file.browse();
                }
----

la var "file" n'est accessbile que depuis le scope de la function
on_click
en dehors de ce scope "file" n'existe pas

avec ceci
----
//class
private var _file:FileReference ;

        public function Explorer()
        {
            _file  = new FileReference() ;
            _file.addEventListener( Event.SELECT , _select);
            _file.addEventListener( Event.CANCEL , _cancel);
        //..

----

la var "_file" est dans le scope de la class et donc existe et
persiste
tant que l'instance de la class existe


lorsque que l'on deal avec du file I/O, en bas niveau flash va devoir
garder ce qu'on appelle un "file handle" ouvert pour pouvoir acceder
au fichier
(voir http://en.wikipedia.org/wiki/File_descriptor et aussi
http://en.wikipedia.org/wiki/Stdio.h)

pour que ce "file handle" reste ouvert et donc accessible il faut que
la var persiste

ce qui amha explique pourquoi FileReference aura un comportement
bizarre (ou plantera) si
on l'utilise en var local depuis une methode ou si on utilise des
fonctions local pour les events,
et un comportement normal dans une var déclarée sur la class et des
methodes déclarées sur la classe pour ecouter les events.

bref le petit bout de code que montre Eka c'est ce que j'aurais fait
naturellement,
mais plus que ca c'est la seule maniere pour que ca marche.

zwetan



--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "FCNG" de 
Google Groupes.
 Pour transmettre des messages à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour résilier votre abonnement à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour afficher d'autres options, visitez ce groupe à l'adresse 
http://groups.google.com/group/FCNG?hl=fr
-~----------~----~----~----~------~----~------~--~---

Répondre à