Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

28avr/0910

Flex Chart – Ajouter des Series depuis une lecture XML e4x

Dans les exemples précédents, on a vu comment créer un Chart Flex en ActionScript et comment ajouter des Series à la volée en AS3. On va maintenant prendre un XML de data en entrée pour créer nos séries de manières dynamique, en fonction de la data.

On va utiliser la syntaxe e4x pour extraire les données uniques de notre data (ici, des noms). A l'issue de cette extraction, on aura un tableau de nom (Array). On va ensuite itérer sur ce tableau de nom pour construire une LineSeries pour chaque nom.

6avr/090

Flex Builder 4 – Les nouvelles fonctionnalités du debugger de Flex Builder

Dans son blog, Mike Morearty de la Flex Builder Team expose les nouveautés de Flex Builder 4 (FB4). Au programme, de nombreuses améliorations pour le debugger qui vont être très utiles. Adobe Flex Builder 4 n'est pas encore disponibles sur les Adobe Labs mais le sera prochainement. Les personnes ayant assisté à MAX ont eux eu la possibilité de tester la bête.

Voici donc les prochaines fonctionnalités de Flex Builder 4:

Conditional Breakpoints

Lorsque vous êtes en mode debug, vous pouvez fixer des points d'arrêt (breakpoints) afin de voir les valeurs des variables à cet instant (Watch). Supposons que vous ayez un point d'arrêt par lequel votre programme passe des centaines de fois. Flex Builder va automatiquement s'arrêter et donner le focus au Builder. Si vous voulez donc intercepter un cas particulier, il faudrait donc être très patient. Dans Flex Builder 4, vous pourrez fixer des points d'arrêt conditionnel.

Par exemple, Flex Builder va s'arrêter uniquement si une variable "x" est null. Vous pourrez le faire simplement en faisant clic droit sur le point d'arrêt, en allant dans ses propriétés et en ajoutant la condition:

breakpoint FB
Vous pourrez aussi mettre un compteur. Par exemple si vous indiquer une valeur de compteur de 5, le breakpoint sera actif au bout du 5e passage.

2avr/0910

Flex Tips – Remplir un Model à partir d'un fichier de configuration XML automatiquement

Je viens de lire un article sur un blog qui je pense va intéresser la plupart des Flexeurs ici. Je ne connaissais pas ce mécanisme de Reflection et d'introspection. Vous verrez une fois que vous aurez compris le fonctionnement, la puissance de cette classe qui va vous faire économiser beaucoup de temps!

Le constat est que souvent, pour des applications Flex qui deviennent assez conséquentes,  vous allez vouloir externaliser votre configuration afin de ne pas avoir à compiler à chaque fois pour juste modifier des paramètres. Il y a bien sûr bien d'autres raisons qui pourront vous poussez à externaliser votre config, qui est une bonne pratique. Vous allez souvent préférer un fichier de configuration XML, pour sa facilité de modification et de parcours grâce à e4x.

Ensuite, vous allez charger ce fichier XML et le "mapper" avec une classe Model de votre application. C'est à dire que vous allez faire la correspondance entre les paramètres de votre fichier XML et les variables membre de votre classe.

Voici par exemple, un exemple de configuration que vous pourriez avoir à charger:

<menu>
    <icecream name="Rocky Road" chunksPerSpoonful="12" color="#E9E8CB"/>
    <icecream name="Coffee" chunksPerSpoonful="0" color="#8F6B43"/>
</menu>

Ou vous pouvez aussi choisir de ne pas utiliser des attributs, mais plutôt des noeuds enfants (child):

<menu>
    <icecream>
        <name>Rocky Road</name>
        <chunksPerSpoonful>12</chunksPerSpoonful>
        <color>#E9E8CB</color>
    </icecream>
    <icecream>
        <name>Coffee</name>
        <chunksPerSpoonful>0</chunksPerSpoonful>
        <color>#8F6B43</color>
    </icecream>
</menu>
6fév/093

Flex ActionScript – Récupérer des éléments / attributs XML avec e4x avec n'importe quel namespace

Parser un xml avec e4x est vraiment simple. Il y a quelques jours, j'avais publié un article sur comment lire des attributs XML ayant un Namespace différent avec e4x. Mais dans certains cas, vous ne saurez pas forcement quels namespace vont être présents. Prenons comme exemple ce XML :

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description>
        <rdf:value>xxx</rdf:value>
    </rdf:Description>
</rdf:RDF>

Ici on peut voir que le namespace rdf (préfixe rdf) est défini par http://www.w3.org/1999/02/22-rdf-syntax-ns#. Pour accéder au nœud rdf:value, vous pouvez donc faire:

var rdf:Namespace = new Namespace("http://www.w3.org/1999/02/22-rdf-syntax-ns#");
var attributes:XMLList = XML(event.result).rdf::Description.rdf::value;

Cette technique fonctionne car vous connaissez à l'avance le namespace qui sera utilisé. Mais vous pouvez utiliser un joker (*) pour que cela fonctionne dans n'importe quel cas:

var attributes:XMLList = XML(event.result).*::Description.*::value;
Remplis sous: WebService, XML 3 Commentaires
21jan/090

Flex ActionScript – Lire des attributs XML ayant un Namespace différent avec e4x

Dans la plupart des cas, e4x facilite grandement la lecture et l'écriture d'un fichier XML en ActionScript. La syntaxe pointée permet de récupérer facilement des éléments tandis que l'opérateur .@ permet de récupérer les attributs des noeuds XML.

Je voulais parser ce XML provenant d'un service WMS (Version réduite):

<Get>
  <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.bsc-eoc.org/cgi-bin/bsc_ows.asp?"/>
</Get>

Pour mon application Flex,  il fallait que je récupère la valeur de l'attribut href: http://www.bsc-eoc.org/cgi-bin/bsc_ows.asp?. Donc de manière assez habituelle, j'ai essayé:

xml.OnlineResource.@xlink:href

Mais comme le ":" est interprété par le compilateur, je me prend l'erreur de syntaxe:

1084: Erreur de syntaxe : rightparen est attendu devant colon.

Donc j'essaie ensuite avec la notation tableau:

xml.OnlineResource.@["xlink:href"]

Je trace ma valeur, rien ne s'affiche, aucune valeur d'attribut XML n'est donc récupérée. En regardant un peu sur la doc d'XML en ActionScript 3, je me rend compte qu'il faut en fait manipuler ce namespace "xlink".

Remplis sous: XML Lire la suite