En revenant un peu au développement AS, je me rends compte du nombre de fonctionnalités que j'ai développé plusieurs fois, et travaille donc actuellement à me créer un ensemble de classes utilitaires qui m'éviteront de perdre du temps sur des développements répétitif, comme le fait tout programmeur un minimum organisé ! :$ Par manque de temps et de projets nécessitant un investissement suffisant, je ne l'ai pas fait avant, et je m'y mets donc sérieusement ! 8)

Je travaille actuellement sur une classe de preload, un peu à la manière de MovieClipLoader, mais me permettant de charger un ensemble de fichiers de différents types les uns aprés les autres avec les différents évènements correspondant. Ces fichiers pourraient être des SWF externes, des sons, des fichiers XML, voire des vidéos (si c'est faisable, je n'ai encore jamais eu l'utilité de la vidéo dans Flash). Le fait de ne pas les charger simultanément vient tout simplement d'une préoccupation d'optimisation de la bande passante et de priorisation des téléchargements.
Il s'agit donc pour moi de stocker l'ensemble des fichiers à charger, et de lancer une méthode de ma classe. Le problème est que j'aurais aimé pouvoir commencer par récupérer le cumul des tailles de mes fichiers. J'ai d'abord pensé à créer des LoadVars sur chaque fichier, et à les interrompre une fois la taille récupérée, sans charger la totalité du fichier.

Or il semble que la suppression d'un objet LoadVars (ou XML, et je soupconne les autres types "loadables") ne met pas fin au téléchargement. En effet, la méthode onLoad se lance malgré le fait que j'ai utilisé delete sur l'objet de type LoadVars qui m'a servi à récupérer la taille du fichier ... :(this.tst = new LoadVars();
this.tst.onLoad = function() {
        trace("OK");
}
this.tst.load("<a href="http://www.lalex.com/monfichier.jpg">http://www.lalex.com/monfichier.jpg</a>");
this.onEnterFrame = function() {
        var tt = this.tst.getBytesTotal();
        trace(tt);
        if (tt != undefined) {
                delete this.tst;
                delete this.onEnterFrame;
        }
}

La sortie donne undefined
undefined
undefined
undefined
28449
OK <= aprés quelques secondes

Aprés un parcours des archives de FlashCoders, il semble qu'aucune solution n'a été trouvée. :( Apparemment, Flash crée automatiquement une référence vers l'objet, qui devient une référence anonyme si on le supprime, et empêche donc le garbage collector (ou ramasse-miettes en français :P) de faire son office ...

Si jamais entre temps, quelqu'un avait trouvé une solution à cet épineux problême, je serais ravi de l'apprendre ! :=)

Pour revenir à ma classe, je prévois également, une fois la solution "à la queue-leu-leu" implémentée, de faire un système de pools de téléchargement, qui permettrait de télécharger un nombre défini de fichiers simultanément. Par exemple, on pourrait ainsi décider de ne pas charger plus de 3 fichiers à la fois. Ainsi, 3 fichiers se téléchargeraient, et le premier à avoir fini laisserait sa place au suivant, etc... Je prévois aussi de faire un système de téléchargement par catégorie (d'abord le XML, puis les clips, puis les sons, etc...)

Je mettrai bientôt la classe à disposition ici même ... ;)