Synchronisation de la méthode close
Par Cédric Tabin le dimanche 13.04.2008, 23:14 - ActionScript - Lien permanent
Je travaillais récemment sur un projet avec masapi lorsque je suis tombé sur un souci dû à la méthode close. En effet, il semblerait qu'il y a un petit souci de synchronisation avec la fin du chargement et de l'appel à cette méthode...
Le projet était très simple : charger une liste d'images selon la catégorie choisie (qui est un bouton). Le but est donc de faire stopper le Massive Loading lorsque l'utilisateur clique sur une autre catégorie.
import ch.capi.net.*; var cat1:Array = ["img1.jpg", "img2.jpg", "img3.jpg"]; var cat2:Array = ["img4.jpg", "img5.jpg", "img6.jpg"]; var ml:MassLoader = new MassLoader(1); //chargement séquentiel var fc:LoadableFileFactory = new LoadableFileFactory(); function loadCategory(cat:Array):void { if (ml.stateLoading) ml.stop(); //peut provoquer un souci quelquefois ! for (var i:int=0 ; i<cat.length ; i++) { var il:ILoadableFile = fc.create(cat[i]); ml.addFile(il); } ml.start(); } //...
Je me suis demandé si le bug ne venait pas de mon API, mais après investigation il semblerait que ce soit la méthode close de Loader qui pose problème... En effet, l'appel à cette méthode provoque une erreur dans le cas où l'état est le suivant :
- Le chargement a été lancé.
- L'événement Event.OPEN a été envoyé.
- L'événement Event.COMPLETE n'a pas été envoyé.
- Les propriétés bytesLoaded et bytesTotal sont égales.
A partir de là, il est simple de solutionner le problème : si ldr.bytesLoaded == ldr.bytesTotal, alors l'appel à la méthode close n'est pas fait car l'événement Event.COMPLETE devrait surgir d'une milliseconde à l'autre
C'est un souci qui m'avait complètement échappé lors des phases RC de masapi, ce qui est désormais corrigé dans la dernière version (1.1) !
Commentaires
flooder !
http://www.astorm.ch/blog/index.php...
lol :D Non ce n'est pas tout à fait le même problème Et il me semble également que ce souci n'est pas seulement relatif à Loader, mais à tous les chargeur (URLLoader, Sound, ...)
@++