Voila j'ai un projet en cours en Flex/AS3 et j'ai un petit souci.
J'ai conçut un composant MXML, qui n'est autre qu'un panel avec une floppée d'images, dont une qui change avec le temps...
comprenez, qu'elle est modifiable. Si la source données n'est correcte, l'image par défaut est appliquée.
Et c'est là que ca ne va pas. Les images internes, donc par défaut, sont des ressources Embed donc embarquées directement dans le SWF, mais sinon les images que je dois appliquer à l'image qui peut changer dans ce composant, sont des URL absolues. (sur le même nom de domaine... je connais les règles de sécurité imposée à flex... silverlight souffre des memes restrictions.)
En effet dans la mesure où j'ai tout un basard à effectuer commee traitement une fois la source appliquée à l'image du composant, j'ai donc créé une propriété sur le composant, qui s'appelle thumbnail de type Objet avec les deux assesseurs get et set.
le problème c'est que lorsque j'instancie le composant, après une lecture depuis un XML, quand je fourni une String contenant une url dans la propriété thumbnail, j'ai droit à une magnifique exception...
TypeError : Error #1009
Voici les différentes parcelles de code...
dans le composant :
(le reste du code et les fragments de code sans rapports ont été effacés)
et lorsque j'utilise le composant :
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 <mx:Script> <![CDATA[ /// Ressources graphiques embarquées [Embed(source="../images/galleries/nothumb.png")] [Bindable] private var defaultIcon : Class; /// Champs internes private var m_Custom : Boolean; /// Définition de l'icône /// Si cette propriété n'est pas définie ou que l'image ne peut-être chargée une icône par défaut est utilisée public function get thumbnail() : Object { if ( !m_Custom ) return null; return iThumb.source; } public function set thumbnail(value: Object) : void { m_Custom = true; iThumb.source = value; } /// Gestionnaires d'évenements private function hError (result : Object) : void { m_Custom = false; iThumb.source = defaultIcon; } ]]> </mx:Script> <mx:Image id="iThumb" width="130" height="136" left="8" top="3" source="{defaultIcon}" ioError="hError(event)"/>
nota, attrUrl.toXMLString()+"/thumbnail.jpg" retourne une chaine...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 for each (var item : XML in list) { var attrName : XMLList = item.@name; var attrUrl : XMLList = item.@file; var thumb : decThumb = new decThumb(); /// <= Composant où j'ai le problème thumb.title = attrName.toXMLString(); thumb.thumbnail = attrUrl.toXMLString() + "/thumbnail.jpg"; /// <= ICI ON A UNE EXCEPTION !!! thumb.url = attrUrl.toXMLString();
Donc voilà je suis un peu perplexe, car la chaine qui en résulte est une URI pleinement qualifiée http://www.domaine.tld/.../.../thumbnail.jpg
et cette URI existe, seul le fichier n'existe pas... c'est d'ailleurs pour cette meme raison que je récupère les ioError...
Donc voilà je suis un peu perdu, donc si une ame charitable savait ce qui clochait et me dire quoi faire, je suis preneur
Partager