bonjour les codeurs , je me suis lancé dans l'écriture de petit outils
utilisant les nouvelles propriété de l'objet FileReference ( data,
save ) , très pratique , mais avants d'arriver jusqu'a ces deux
methodes,  je me suis retrouvé face a ce que je pourrais appeler un
bug !

je vous explique mais en code :

package local.file {

        import flash.events.Event;
        import flash.events.IEventDispatcher;
        import flash.net.FileFilter;
        import flash.net.FileReference;
        import flash.net.FileReferenceList;

        /**
         * @author goabonga
         */
        public class AsFileSelector{
                //
                public static const TextFile : FileFilter = new 
FileFilter('Texte',
'*.txt');
                public static const CsvFile : FileFilter = new FileFilter('Csv',
'*.txt;*.csv');
                public static const JpgFile : FileFilter = new FileFilter('Image
jpeg (*.jpg,*.jpeg)', '*.jpg;*.jpeg');
                public static const GifFile : FileFilter = new FileFilter('Image
gif', '*.gif');
                public static const SwfFile : FileFilter = new FileFilter('Flash
movie', '*.swf');
                public static const FlvFile : FileFilter = new FileFilter('Video
flv', '*.flv');

                /**
                 * AsFileSelector
                 */
                public function AsFileSelector() {


                }

                /**
                 *
                 */
                public function select(multi : Boolean = false,filter : Array =
null) : Boolean {
                        var o : Boolean;

                        if(multi) {
                                trace('mode multi');
                                o = multi_selector(filter);
                        } else {
                                trace('mode single');
                                o = single_selector(filter);
                        }
                        return o;
                }

                /**
                 *
                 */
                private function single_selector(filter : Array ) : Boolean {
                        var o : Boolean;
                        if(filter != null) {
                                trace('with filter : ' + filter);
                        }

                        var selector : FileReference = new FileReference();
                        configureListeners(selector);
                        o = selector.browse(filter);
                        return o;
                }

                /**
                 *
                 */
                private function multi_selector(filter : Array ) : Boolean {
                        var o : Boolean;
                        if(filter != null) {
                                trace('with filter : ' + filter);
                        }

                        var selector : FileReferenceList = new 
FileReferenceList();
                        configureListeners(selector);
                        o = selector.browse(filter);
                        return o;
                }

                /**
                 *
                 */
                private function configureListeners(dispatcher : 
IEventDispatcher) :
void {
                        dispatcher.addEventListener(Event.SELECT, 
selectHandler);
                        dispatcher.addEventListener(Event.CANCEL, 
cancelHandler);
                }

                /**
                 *
                 */
                private function cancelHandler(event : Event) : void {
                        trace("cancelHandler: " + event);
                }

                /**
                 *
                 */
                private function selectHandler(event : Event) : void {
                        trace('e : ' + event);
                        if(event.target is FileReference) {
                                var file : FileReference = 
FileReference(event.target);
                                trace("selectHandler: name=" + file.name);
                        } else {
                                var files : FileReferenceList = 
FileReferenceList(event.target);
                                trace("selectHandler: length=" + 
files.fileList.length);
                        }
                }
        }
}






puis pour tester  :


package test {
        import local.file.AsFileSelector;

        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.KeyboardEvent;
        import flash.net.FileReferenceList;

        /**
         * @author goabonga
         */
        public class TestFileSelector extends Sprite {

                public function TestFileSelector() {
                        var selector : AsFileSelector = new AsFileSelector();
                        trace();

                        var on_keydown : Function = function(e : 
KeyboardEvent):void {
                                //press s
                                if(e.keyCode == 83 ) {
                                        trace(selector.select());
                                        /**
                                         * mode single
                                         * true
                                         * e : [Event type="select" 
bubbles=false cancelable=false
eventPhase=2]
                                         * selectHandler: name=Chris.jpg
                                         */
                                }
                                //press i
                                if(e.keyCode == 73) {
                                        trace(selector.select(false, 
[AsFileSelector.JpgFile]));
                                        /**
                                         * mode single
                                         * with filter : [object FileFilter]
                                         * true
                                         * e : [Event type="select" 
bubbles=false cancelable=false
eventPhase=2]
                                         * selectHandler: name=Chris.jpg
                                         */
                                }
                                //press m
                                if(e.keyCode == 77 ) {
                                        trace(selector.select(true, 
[AsFileSelector.JpgFile]));
                                        /**
                                         * mode multi
                                         * with filter : [object FileFilter]
                                         *  true
                                         */
                                }
                                //press t
                                if(e.keyCode == 84 ) {

                                        var files : FileReferenceList = new 
FileReferenceList();
                                        var f : Function = function(e : 
Event):void {
                                                trace('e:' + e);
                                                trace('e:' + (e.target as 
FileReferenceList).fileList);
                                                /**
                                                 * e:[Event type="select" 
bubbles=false cancelable=false
eventPhase=2]
                                                 */
                                        };
                                        files.addEventListener(Event.SELECT, f);
                                        files.browse([AsFileSelector.JpgFile]);
                                }
                                //press n
                                if(e.keyCode == 78 ) {
                                        trace(selector.select(true));
                                        /**
                                         * mode multi
                                         * true
                                         */
                                }
                        };

                        stage.addEventListener(KeyboardEvent.KEY_DOWN, 
on_keydown);
                }
        }
}




le truc que je ne comprend pas ? c'est que lorsque j'appelle m'a
function :
select(true pour le mode multiple , ...) ben je n'arrive pas a ecouter
le Event.Select pourtant quand on regarde dans ma class permettant
d'effectuer mes test si je lance un  simple  :

var files : FileReferenceList = new FileReferenceList();
var f : Function = function(e : Event):void {
trace('e:' + e);
trace('e:' + (e.target as FileReferenceList).fileList);
/**
 * e:[Event type="select" bubbles=false cancelable=false eventPhase=2]
 */
};
files.addEventListener(Event.SELECT, f);
files.browse([AsFileSelector.JpgFile]);



tout fonctionne à merveille ?
Voila j'espère que je n'ai pas dis n'importe quoi et que vous
arriverez a me comprendre .

@chris


--~--~---------~--~----~------------~-------~--~----~
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 à