Adobe
Produits
Acrobat
Creative Cloud
Creative Suite
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
Autres produits
Solutions
Marketing numérique
Médias numériques
Éducation
Services financiers
Administration
Web Experience Management
Autres solutions
Formation Aide Téléchargements Société
Acheter
Utilisation privée pour les particuliers et les travailleurs à domicile
Éducation pour les étudiants, les enseignants et le personnel administratif
Point de vente professionnel pour les petites et moyennes entreprises
Programmes de licences pour les entreprises, les établissements d'enseignement et l'administration
Autres options d'achat
Offres spéciales
Rechercher
 
Informations Se connecter
Bienvenue, Mon panier Mes commandes Mon Adobe
Mon Adobe
Mes commandes
Mes informations
Mes préférences
Déconnexion
Pourquoi dois-je me connecter ? Connectez-vous pour pouvoir gérer votre compte et accéder aux versions d'évaluation téléchargeables, aux extensions de produits, aux communautés, etc.
Adobe
Produits Rubriques Buy   Rechercher  
Solutions Société
Aide Formation
Se connecter Déconnexion Mes commandes Mon Adobe
Date de disponibilité estimée en précommandeDate. Votre carte bancaire sera débitée à l'expédition du produit. La date de disponibilité estimée est sujette à modification. Date de disponibilité estimée en précommandeDate. Votre carte bancaire sera débitée lorsque le produit sera disponible en téléchargement. La date de disponibilité estimée est sujette à modification.
Qté:
Votre achat est soumis à la vérification de votre éligibilité
Sous-total
Vérifier et régler
Adobe Developer Connection / Pôle de développement Flex / Test Flex /

Test Flex : Créer une application en une heure

par Adobe

adobe_logo

Modifié

2 May 2011

Partage

Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn
Signet
Imprimer

Tags

Flash Builder Flex RIA

Vidéo | Code | Didacticiel | Liens

Programmer des interactions

 

Flash Player n'est pas installé Flash 10 doit-il être installé ? Flash 10 doit-il être installé ?
  • Télécharger la version d’évaluation de Flash Builder 4.5
  • Télécharger les fichiers de la solution de test (ZIP, 14 Mo)

Code

<?xml version="1.0" encoding="utf-8"?> <s:Application …> <fx:Script> <![CDATA[ (…) import spark.events.GridSelectionEvent; protected function deptBtn_clickHandler(event:MouseEvent):void { currentState="Departments"; } protected function empBtn_clickHandler(event:MouseEvent):void { currentState="Employees"; } protected function empDg_selectionChangeHandler(event:GridSelectionEvent):void { currentState="EmployeeDetails"; } protected function searchBtn_clickHandler(event:MouseEvent):void { if(searchTxt.text!="") { getEmployeesResult.token = employeeService.getEmployeesByName(searchTxt.text); } else { getEmployeesResult.token = employeeService.getEmployees(); } currentState="Employees"; } protected function toggleBtn_clickHandler(event:MouseEvent):void { if(toggleBtn.selected){ deptDg.setStyle("fontSize",14); toggleBtn.label="Smaller Text"; } else{ deptDg.setStyle("fontSize",12); toggleBtn.label="Bigger Text"; } } ]]> </fx:Script> (…) <s:Button id="empBtn" click.Departments="empBtn_clickHandler(event)" …/> <s:Button id="deptBtn" click="deptBtn_clickHandler(event)" …/> <s:DataGrid id="empDg" selectionChange="empDg_selectionChangeHandler(event)" …> (…) <s:Button id="searchBtn" click="searchBtn_clickHandler(event)" …/> <s:TextInput id="searchTxt" enter="searchBtn_clickHandler(event)" .../> <s:Button id="toggleBtn" includeIn="Departments" x="600" y="100" label="Bigger Text" width="100" click="toggleBtn_clickHandler(event)"/> </s:Application>

Didacticiel

Dans Flex, lorsqu'un utilisateur interagit avec un composant d'une application Flex, des événements (click, rollOver ou rollOut, par exemple) sont diffusés par le composant. Vous devez désigner une fonction de gestion d'événements à appeler pour répondre aux événements lorsqu'ils surviennent.

Dans ce didacticiel, vous allez écrire des gestionnaires d'événements pour basculer entre les différents états de l'application lorsque l'utilisateur clique sur certains boutons, renseigner le formulaire de détails lorsqu'il sélectionne une ligne d'un DataGrid, mais également rechercher les employés et agrandir le texte du DataGrid lorsqu'il clique sur un bouton spécifique.

Étape 1 : Générez un gestionnaire d'événements.

Cliquez avec le bouton droit de la souris sur le bouton Departments et sélectionnez Générer un gestionnaire de clics. Désignez le gestionnaire obtenu comme gestionnaire click de tous les états.

Flash Builder passe automatiquement en mode Source, ce qui vous permet de voir une nouvelle fonction :

protected function deptBtn_clickHandler(event:MouseEvent):void { // TODO Auto-generated method stub }

ainsi qu'un attribut d'événement click dans la balise du bouton Departments :

<s:Button id="deptBtn" x="140" y="100" label="Departments" enabled.Departments="false" click.EmployeeDetails="deptBtn_clickHandler(event)"/>

Lorsque l'utilisateur clique sur ce bouton dans l'état EmployeeDetails, cette fonction de gestion d'événements est appelée. Modifiez-la afin que le gestionnaire click s'applique à tous les états :

<s:Button id="deptBtn" x="140" y="100" label="Departments" enabled.Departments="false" click ="deptBtn_clickHandler(event)"/>

Étape 2 : Basculez vers l'état Departments lors d'un événement click sur un bouton.

À l'intérieur de la fonction, passez dans l'état Departments en attribuant la valeur Departments à la propriété currentState de l'application. Exécutez l’application.

Le gestionnaire d'événements click du bouton Departments doit se présenter comme suit :

protected function deptBtn_clickHandler(event:MouseEvent):void { currentState="Departments"; }

Lorsque vous exécutez l'application, vous devez à présent pouvoir cliquer sur le bouton Departments pour basculer vers l'état Departments (voir Figure 1). Le bouton Employees est désormais activé, contrairement au bouton Departments.

Dans un navigateur, passez à l'état Departments.
Figure 1. Dans un navigateur, passez à l'état Departments.

Étape 3 : Basculez vers l'état Employees lors d'un événement click sur un bouton.

L'état Departments étant sélectionné en mode Création, générez un gestionnaire d'événements click pour le bouton Employees et, à l'intérieur de la fonction, passez dans l'état Employees.

Le gestionnaire d'événements click du bouton Employees doit se présenter comme suit :

protected function empBtn_clickHandler(event:MouseEvent):void { currentState = "Employees"; }

Dans la balise du bouton Employees, vous pouvez conserver l'attribut click.Departments ou le remplacer par click. Ces deux valeurs sont acceptées car ce bouton n'est activé et cliquable que dans l'état Departments.

Lorsque vous exécutez l'application, vous devez à présent pouvoir basculer à volonté entre les états Departments et Employees. Sélectionnez une ligne du DataGrid des employés : rien ne se passe.

Étape 4 : Basculez vers l'état EmployeesDetails lors d'un événement selectionChange du DataGrid.

En mode Source, ajoutez un attribut selectionChange au composant DataGrid empDg et générez un gestionnaire selectionChange (voir Figure 2). À l'intérieur du gestionnaire, attribuez la valeur EmployeeDetails à la propriété currentState.

Générez un gestionnaire d'événements de modification du DataGrid.
Figure 2. Générez un gestionnaire d'événements de modification du DataGrid.

Le gestionnaire d'événements selectionChange du DataGrid doit se présenter comme suit :

protected function empDg_selectionChangeHandler(event:GridSelectionEvent):void { currentState="EmployeeDetails"; }

Lorsque vous exécutez l'application, vous devez à présent pouvoir sélectionner une ligne du DataGrid des employés et consulter les détails de l'employé correspondant (voir Figure 3).

Dans un navigateur, sélectionnez un employé pour consulter l'état EmployeeDetails.
Figure 3. Dans un navigateur, sélectionnez un employé pour consulter l'état EmployeeDetails.

Étape 5 : Chargez de nouvelles données lors d'un événement click.

À partir de la vue Données/Services, configurez l'opération getEmployeesByName() afin qu'elle renvoie un tableau d'objets Employee existants : Employee[]. Faites glissez l'opération getEmployeesByName() sur le bouton Search. À l'intérieur du gestionnaire d'événements généré, transmettez à l'opération la valeur saisie par l'utilisateur, contenue dans searchTxt.text. Remplacez la valeur de l'objet CallResponder par le répondeur getEmployeesResult existant et faites basculer l'application vers l'état Employees. Dans la vue Données/Services, définissez le type de données Employee[] comme type de retour pour la fonction getEmployeesByName.

Par défaut, un nouveau répondeur getEmployeesByNameResult est créé :

<s:CallResponder id="getEmployeesByNameResult"/>

et utilisé pour l'appel de service :

protected function searchBtn_clickHandler(event:MouseEvent):void { getEmployeesByNameResult.token = employeeService.getEmployeesByName(searchTxt.text); }

Cependant, vous souhaitez que les résultats soient affichés dans le DataGrid empDg existant. Vous allez donc remplacer l'objet CallResponder par le répondeur getEmployeesResult, dont la propriété lastResult est déjà liée au dataProvider du DataGrid via l'objet AsyncListView. Vous voulez également que l'application bascule de nouveau vers l'état Employees jusqu'à ce que l'utilisateur sélectionne un autre employé dans le DataGrid.

protected function searchBtn_clickHandler(event:MouseEvent):void { getEmployeesResult.token = employeeService.getEmployeesByName(searchTxt.text); currentState="Employees"; }

Dans la mesure où vous n'utilisez pas le répondeur getEmployeesByNameResult généré, vous pouvez en supprimer la définition, qui se présente comme suit, dans le block Declarations :

<s:CallResponder id="getEmployeesByNameResult"/>

Exécutez l'application, saisissez un nom (Smith, par exemple) dans le champ de recherche et cliquez sur le bouton Search. Lorsque vous cliquez sur ce bouton, un nouvel appel de service est adressé au serveur et l'objet CallResponder est renseigné avec ces nouvelles données, ce qui entraîne la modification des données affichées dans le DataGrid. Sélectionnez un employé et assurez-vous que les détails correspondants sont affichés.

Remarque : si les détails de l'employé sélectionné ne sont pas visibles, vérifiez que vous avez bien utilisé la vue Données/Services pour définir le type de données Employee[] comme type de retour pour la fonction getEmployeesByName.

Examinez les détails.
Figure 4. Examinez les détails.

Dans cet exemple, vous appelez une méthode côté serveur pour filtrer les employés. Toutefois, puisque vous avez déjà renvoyé au client tous les enregistrements d'employé, vous auriez pu vous contenter de filtrer les enregistrements en local. Cette méthode aurait été plus efficace, car elle aurait permis d'éviter les appels inutiles au serveur.

Étape 6 : Utilisez une logique conditionnelle pour extraire tout ou partie des enregistrements.

Modifiez le gestionnaire searchBtn click afin qu'il appelle getEmployeesByName() si searchTxt.text comporte une valeur et si getEmployees() n'en possède pas.

Le gestionnaire d'événements doit se présenter comme suit :

protected function searchBtn_clickHandler(event:MouseEvent):void { if(searchTxt.text!=""){ getEmployeesResult.token = employeeService.getEmployeesByName(searchTxt.text); } else{ getEmployeesResult.token = employeeService.getEmployees(); } currentState="Employees"; }

Exécutez l’application. Effectuez une recherche par nom et consultez les résultats. Ensuite, supprimez la chaîne recherchée et lancez une nouvelle recherche. Tous les employés doivent de nouveau être répertoriés.

Étape 7 : Recherchez des employés lors d’un événement enter.

Enregistrez le gestionnaire d’événement afin qu’il écoute l’événement enter de TextInput et définissez-le sur la fonction searchBtn_clickHandler() existante. Modifiez l’argument de l’événement event handlers de façon à remplacer le type MouseEvent par Event.

L’élément TextInput doit se présenter comme suit :

<s:TextInput id="searchTxt" includeIn="EmployeeDetails,Employees" x="494" y="100" prompt="Last Name" enter="searchBtn_clickHandler(event)"/>

L’événement enter diffuse un événement Flex et l’événement click, un objet MouseEvent. Pour que le même gestionnaire puisse gérer ces deux événements, vous devez remplacer son argument par le type de superclasse Event.

protected function searchBtn_clickHandler(event:Event):void { (...) }

Étape 8 : Modifiez des styles d’objet lors d’un événement click.

Ajoutez à l’état Departments un contrôle ToggleButton, toggleBtn, avec le libellé (dans la police du code) Bigger Text (voir Figure 5). Générez pour ce contrôle un gestionnaire click qui utilise la méthode setStyle() pour augmenter le style fontSize du DataGrid.

Ajoutez un bouton Bigger Text dans la vue Departments.
Figure 5. Ajoutez un bouton Bigger Text dans la vue Departments.

Le gestionnaire click doit se présenter comme suit :

protected function toggleBtn_clickHandler(event:MouseEvent):void { deptDg.setStyle("fontSize",14); }

La notation objet.propriété=valeur que vous utilisez pour définir des propriétés ne permet pas de changer les styles à l’exécution. Vous devez par conséquent utiliser la méthode setStyle(). Les propriétés ne sont affectées et applicables qu’à une seule instance d’objet, tandis que les styles peuvent être définis à plusieurs niveaux (intégrés, dans des feuilles de style CSS ou hérités). L’attribution d’un style à un objet peut donc avoir une incidence sur le style d’autres objets. Pour gérer la totalité des styles, vous devez utiliser une classe StyleManager.

Exécutez l’application, basculez vers l’état Departments et cliquez sur le bouton Bigger Text. Le texte du DataGrid doit apparaître en caractères plus grands.

Étape 9 : Diminuez la taille du texte lorsque le contrôle ToggleButton est désélectionné.

Dans toggleBtn_clickHandler(), ajoutez une logique conditionnelle afin de savoir si la propriété selected du contrôle toggleBtn est définie sur true. Si c’est le cas, augmentez la taille de la police et définissez son libellé label sur Smaller Text. Si ce n’est pas le cas, diminuez la taille de la police et définissez son libellé label sur Bigger Text.

Le gestionnaire d’événements doit se présenter comme suit :

protected function toggleBtn_clickHandler(event:MouseEvent):void { if(toggleBtn.selected){ deptDg.setStyle("fontSize",14); toggleBtn.label="Smaller Text"; } else{ deptDg.setStyle("fontSize",12); toggleBtn.label="Bigger Text"; } }

Définissez la largeur width du contrôle ToggleButton à 100 de façon à ce que celui-ci conserve la même taille en cas de changement de libellé.

<s:ToggleButton id="toggleBtn" includeIn="Departments" x="600" y="100" width="100" label="Bigger Text" click="toggleBtn_clickHandler(event)"/>

Exécutez l’application et basculez vers l’état Departments. Vérifiez que vous pouvez augmenter et diminuer la taille du texte.

Dans ce module, vous avez créé une application Flex avec plusieurs états capables de charger et d’afficher des données et d’exécuter des requêtes de base de données. Pour compléter vos connaissances, consultez les autres didacticiels de test, qui abordent des sujets tels que la mise à jour d’une base de données en fonction des données saisies par l’utilisateur et le débogage et le déploiement d’une application.

Pour en savoir plus

Pour en savoir plus sur cette rubrique, consultez les ressources suivantes :

  • Initiation à ActionScript 3

Documentation : Utilisation de Flash Builder 4.5

  • Création de gestionnaires d’événement

Documentation : Utilisation de Flex 4.5

  • Events (en anglais)

Guide de référence ActionScript 3

  • ActionScript Statements, Keywords, and Directives (en anglais)

Pôle de développement Flex

  • Gestion des événements

Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License+Adobe Commercial Rights

Cette œuvre fait l’objet d’une licence Paternité - Pas d’utilisation commerciale - Partage des conditions Initiales à l’identique 3.0 Unported Creative Commons. Les autorisations qui n'entrent pas dans le cadre de cette licence, concernant les exemples de code inclus dans cette œuvre, sont disponibles auprès d'Adobe.

More Like This

  • Test : Déployer une application sur un serveur web
  • Test Flex : Créer une application en une heure
  • Test Flex : Créer une application en une heure
  • Test : Tester et déboguer le code
  • Test : Déployer une application sur un serveur web
  • Test : Déployer une application sur un serveur web
  • Test : Déployer une application sur un serveur web
  • Test Flex : Créer une application en une heure
  • Test Drive: Deploy your application to a web server

Produits

  • Acrobat
  • Applications mobiles
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • Photoshop
  • Touch Apps

Solutions

  • Marketing numérique
  • Médias numériques
  • Web Experience Management

Secteurs d'activité

  • Éducation
  • Services financiers
  • Administration

Aide

  • Centres d'aide sur les produits
  • Commandes et retours
  • Téléchargement et installation
  • Mon Adobe

Formation

  • Adobe Developer Connection
  • Adobe TV
  • Formation et certification
  • Forums
  • Pôle de création

Options d'achat

  • Pour les particuliers et les travailleurs à domicile
  • Pour les étudiants, les enseignants et le personnel administratif
  • Pour les petites et moyennes entreprises
  • Pour les entreprises, les établissements d'enseignement et l'administration
  • Offres spéciales

Téléchargements

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

Société

  • Salle de presse
  • Programmes partenaires
  • Responsabilité sociale de l'entreprise
  • Offres d'emploi
  • Relations avec les investisseurs
  • Événements
  • Secteur juridique
  • Sécurité
  • Contacter Adobe
Sélectionnez votre pays France (modifier)
Sélectionnez votre région/pays Fermer

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

Conditions d'utilisation | Politique de confidentialité et cookies (Mise à jour)

Choix de Pub