Bonjour,
Je travaille avec Flash Builder (SDK 4.5.1) et je recherche une solution (si possible native) pour charger une série de photos qui seront ensuite insérées dans un FlipBook.
Le chargement se faisant de manière parallèle et asynchrone, dès lors qu'une image est disponible je recherche un moyen de savoir sur quelle numéro de page elle est supposée être intégrée.
(plus simplement, lorsqu'un événement complete ou ioError survient, je cherche a connaître quel est l'écouteur dans le tableau imagesLoaders[] qui a reçu cet événement. Une fois l'index connu, je sais retrouver mon numéro de page et l'URL de l'image associée.
Voici un exemple fonctionnel simple pour illustrer mon besoin:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="application1_creationCompleteHandler(event)"> <fx:Declarations> <!-- Placer ici les éléments non visuels (services et objets de valeur, par exemple). --> </fx:Declarations> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.events.FlexEvent; protected function application1_creationCompleteHandler(event:FlexEvent):void { var _pictures:Array = new Array(); // collection d'instances URLLoader(s) var imagesLoaders:ArrayCollection = new ArrayCollection(); /** ces images doivent s'ajouter dans un FlipBook * * On affecte à la page correspondante: * > soit l'image dont le chargement vient de se terminer avec succès, * > sinon une image alternative locale du style aperçu non disponible * * */ // image devant paraître en page 1 _pictures.push("http://www.dreuz.info/wp-content/uploads/2010/10/test.jpg"); // image devant paraître en page 2 _pictures.push("http://www.votreopticien.com/tests_de_vue/test_2.gif"); _pictures.push("http://www.mac4ever.com/images/images_actu/70652_650_test_express_t_jays_four_les_intra_speciaux_iphone_ipod_de_jays.jpg"); _pictures.push("http://www.illustrationsof.com/royalty-free-rf-test-tube-clipart-illustration-by-cory-thoman-stock-sample-218521.jpg"); _pictures.push("http://www.jnack.com/inexistante1.jpg"); _pictures.push("http://www.jnack.com/inexistante2.jpg"); _pictures.push("http://www.lesite.com/test-qi/wp-content/uploads/2010/03/test-aptitude1.jpg"); // image devant paraître en dernière page (8) _pictures.push("http://www.jnack.com/micronaxx/wp-content/uploads/2010/02/test-pattern-clock_4767.jpg"); for(var i:int=0;i<_pictures.length;i++) { // Test de l'image courante qui doit être inséré sur la page var myUrlLoader:URLLoader = new URLLoader(); imagesLoaders.addItem(myUrlLoader); imagesLoaders[imagesLoaders.length-1].addEventListener (Event.COMPLETE, function(event:Event):void { trace ("-----------------------------------------\nChargement OK : "+event.toString()+"\n-----------------------------------------"); } ); imagesLoaders[imagesLoaders.length-1].addEventListener (IOErrorEvent.IO_ERROR, function(event:Event):void { trace ("-----------------------------------------\n"+event.toString()+"\n-----------------------------------------"); } ); // procéder chargement de l'URL... imagesLoaders[imagesLoaders.length-1].load(new URLRequest(_pictures[i])); } } ]]> </fx:Script> </s:Application>
En exécutant ceci, j'obtiens dans la fenêtre de debug du bas les messages suivants:
L'ordre de fin de chargement / erreur de chargement est totalement aléatoire
-----------------------------------------
Chargement OK : [Event type="complete" bubbles=false cancelable=false eventPhase=2]
-----------------------------------------
-----------------------------------------
Chargement OK : [Event type="complete" bubbles=false cancelable=false eventPhase=2]
-----------------------------------------
-----------------------------------------
Chargement OK : [Event type="complete" bubbles=false cancelable=false eventPhase=2]
-----------------------------------------
-----------------------------------------
Chargement OK : [Event type="complete" bubbles=false cancelable=false eventPhase=2]
-----------------------------------------
-----------------------------------------
[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Erreur de flux. URL: http://www.jnack.com/inexistante2.jpg"]
-----------------------------------------
-----------------------------------------
[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Erreur de flux. URL: http://www.jnack.com/inexistante1.jpg"]
-----------------------------------------
-----------------------------------------
Chargement OK : [Event type="complete" bubbles=false cancelable=false eventPhase=2]
-----------------------------------------
-----------------------------------------
Chargement OK : [Event type="complete" bubbles=false cancelable=false eventPhase=2]
-----------------------------------------
J'ai pausé un point d'arrêt au niveau des trace(), et trouvé au travers de l'objet "event", quelques propriétés dont target et currentTarget mais rien de vraiment pertinent pour résoudre le problème.
Faut-il ajouter quelque chose genre un token dans le tableau de loaders???
Merci pour votre retour![]()
Partager