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

21juil/117

AIR Mobile – Application TweetDeck (5) – Création d'un composant de défilement horizontal

Notre squelette d'application est bientôt complet, nous avons pour l'instant ajouté la barre de navigation et la barre de header:

AIR Mobile – Application TweetDeck (3) – Ajout de la barre de navigation

AIR Mobile – Application TweetDeck (4) – Création de la barre du haut (header)

Pour la partie centrale, c'est plus complexe. En effet, celle-ci n'est pas un composant "classique". Ce composant ressemble à une liste horizontale mais on ne pourra pas utiliser le composant List pour les raisons suivantes:

  • Une List a tout un mécanisme d'itemRenderer très puissant, mais qui fait que l'affichage peut-être difficile à gérer, notamment à cause de la réutilisation des itemRenderers. Ici, la data est plus un "composant" qu'un "model", cela ne correspond pas vraiment au schéma habituel
  • Un composant List ajoute automatiquement un Scroller. Celui-ci est arrive avec des effets de "bounce & pull" dont nous n'avons pas besoin et qui vont se mettre dans nos pattes. Le composant est au final, un contrôle fin du scroll de l'utilisateur.

Comme le composant List ne nous convient pas, on va créer notre propre composant. Pour nous faciliter la tâche, celui-ci sera un conteneur qui va hériter de HGroup. Cela va nous permettre de faire son intégration de manière très compréhensible en MXML comme ceci:

<comps:HorizontalComponentScroller id="listGroup">
  <s:List id="list1" />
  <s:List id="list2"  />
  <s:List id="list3"/>
  <s:List id="list4"/>
</comps:HorizontalComponentScroller>

On va donc avoir un HGroup, pour lequel on va contrôler à la main, le défilement horizontal à l'intérieur de ce HGroup. Comme de base, les conteneurs Flex 4 n'ajoutent pas automatiquement un Scroller, on va pouvoir faire notre traitement tranquille sans être embêté par certains comportements par défaut. On verra en fin de tutorial que l'on fait en fait une translation en X de ce HGroup à l'intérieur d'un Group pour des raisons pratiques.

Utilisation des Swipe?

Si vous avez un peu manipulé Flex, vous vous êtes peut-être dit : "il est pas très malin, moi je te le fais en 30 secondes en écoutant l'évènement de Swipe gauche / droite !". Ok, j'ai pensé la même chose en débutant le développement de ce composant et pourtant, cela enlève un des comportements intéressants de l'application TweetDeck.

1sept/090

Flex 4 – Différences entre Flex 3 et Flex 4 (5-Layout et Effects)

Traduction de l'article Differences between Flex 3 and Flex 4 beta de Joan Lafferty.

Modifications apportées sur les Effect en Flex 4

De nombreuses améliorations ont été faites sur l'architecture des Effect dans Flex 4. Les effets Halo (Flex 3) ne fonctionnaient que sur les composants basés sur UIComponent. Les effets Spark (Flex 4) peuvent agir sur n'importe quelle cible, même les primitives graphiques du framework. Tous ces effets se trouvent dans le package spark.effects.*.

Puisque ces effets fonctionnent sur les composants Halo, les composants Spark et les primitives graphiques, Adobe recommande l'utilisation des effets Spark pour toutes vos futures applications.

Voir l'article de Chet Hasse sur Effects in Adobe Flex 4 SDK beta

Modifications apportées sur le Layout (mise en page)

Dans les versions précédentes de Flex, la mise en page des composants et des conteneurs était définie dans chaque composant. C'est pourquoi on avait des composants tels que List, TileList et HorizontalList, qui apportaient tous les mêmes fonctionnalités sauf que leur mise en page était différente.

Dans Flex 4, la mise en page a été découplée des composants. Maintenant, les composants Spark tels que Application, List, ButtonBar et Panel peuvent définir leur mise en page de manière déclarative. Dans tous les composants, cela est géré par la classe Group et la mise en page des enfants de Group est laissé à un objet "layout" associé. Cette mise en page supporte à la fois les composants Spark et Halo en plus des primitives graphiques FXG. La mise en page peut même être changée à l'exécution.

En tant que développeur, vous pourrez facilement écrire des "layout" personnalisées et basculer de layout directement dans votre composant. Voici un exemple qui définit une liste verticale, une liste horizontale et une tiled list (en grille):

Vertical List (layout par défaut)

<s:List />

Horizontal List

<s:List>
    <s:layout>
        <s:HorizontalLayout />
    </s:layout>
</s:List>

Tiled List

<s:List>
    <s:layout>
        <s:TileLayout />
    </s:layout>
</s:List>