Livre Pratique d’ActionScript 3 partie 1

2 questions

Écrit le 15 novembre par Matthieu
Publié dans le(s) sujet(s) Livres

Mots clés : , , , , , , , , ,

 

Phrase résumé du livre : l’arrivée d’ActionScript 3 avec Flash 9 apporte des nouveautés et des performances extrêmement intéressantes. Avec une complémentarité des spécialisations Graphistes / Programmeurs, les applications Flash deviennent de plus en plus attractives et intuitives.

Flash 10 enfonce le clou avec la gestion 3D, c’est l’avènement des jeuxvidéos et des applications où (presque) tout devient possible avec de l’imagination!

De Thibault Imbert 1096 pages (édition pdf), 1080 pages (édition livre broché).

Note : Ce livre étant extrêmement complet et intéressant (difficile à résumer 🙂 ), je le publie en plusieurs parties. En voici la première , les suivantes viendront plus tard.

Chronique et résumé du livre

Suite à vos demandes, la chronique de ce livre vous permettra d’avoir une vue d’ensemble de la programmation ActionScript 3. Et également de posséder un ouvrage de référence pour apprendre les bases et beaucoup plus.

Cette chronique vous donne un aperçu des concepts intéressants expliqué dans la version d’Août 2008 – v 0.1.4 du livre Pratique d’ActionScript 3.

Chapitre 1 – Qu’est ce que l’ActionScript 3 ?

Histoire

Thibault Imbert commence nous présenter l’Histoire de Flash. Du rachat de la petite société FutureWave, en passant par la création du langage ActionScript (Flash 4). Ensuite vient son évolution avec l’ActionScript 2 (en 2003 avec Flash MX). Et pour terminer le rachat de Macromédia par le géant Adobe et la sortie de l’ActionScript 3 en 2007 (FLash CS3).

10 raisons de coder en ActionScript 3

  1. Flash 9 possède un taux de pénétration de plus de 95%.
  2. La vitesse d’exécution du code est environ 10 fois supérieure aux précédentes versions d’ActionScript.
  3. ActionScript 3 offre des possibilités incomparables aux précédentes versions d’ActionScript.
  4. Le code ActionScript 3 s’avère plus logique que les précédentes versions du langage.
  5. Le langage ActionScript 3 permet de développer du contenu en Flash, Flex, ou AIR.
  6. Il n’est pas nécessaire de connaître un autre langage orienté objet au préalable.
  7. ActionScript 3 est un langage orienté objet. Sa connaissance vous permettra d’aborder plus facilement d’autres langages objets tels Java, C#, ou C++.
  8. Le langage ActionScript 3 et l’API du lecteur Flash ont été entièrement repensés.
  9. La technologie Flash évolue et s’améliore constamment.
  10. ActionScript 3 est un langage souple, qui demeure ludique et accessible.

Ensuite l’Auteur aborde les différents Outils pour produire du contenu Flash :

  • Flash CS3.
  • Flex Builder.
  • Eclipse avec le SDK Flex et AIR.

Et un paragraphe sur la plateforme Flash qui décrit l’ensemble des technologies utilisant le lecteur Flash.

Chapitre 2 – Langage et API ?

Le langage ActionScript 3

Dans ce chapitre, nous découvrons les nouveautés et les principes de base nécessaires à tout développeur ActionScript 3.

Le cœur du langage est basé sur la spécification ECMAScript (ECAM-262) et intègre partiellement quelques fonctionnalités issues de l’ECMAScript 4.

La conception du lecteur Flash permet de mettre à jour indépendamment l’interface de programmation (API du lecteur) et le langage ActionScript 3.

Les différentes fonctionnalités du lecteur Flash sont stockées dans des packages spécifiques. Par exemple flash.media pour afficher une vidéo, flash.net pour se connecter à un serveur.

La programmation en ActionScript 3 permet d’utiliser la machine virtuelle 2 (AVM2). Cela permet de bénéficier des optimisations de performances. Ce qui n’est pas le cas en programmation ActionScript 1 ou 2.

Pour optimiser les performances, l’AVM2 intègre un mécanisme de compilation du code à la volée. En utilisant le principe de traduction dynamique, cela permet d’obtenir de meilleures performances d’exécution du code en compilant ce dernier à la volée.

Avec l’ActionScript 3 apporte le typage des variables à la compilation et à l’exécution. En associant un type au moment de déclarer notre variable, nous bénéficions d’une vérification des types à la compilation et d’une optimisation des calculs réalisés par le processeur et d’une meilleure optimisation mémoire.

Une autre nouveauté du lecteur Flash 9 réside dans la gestion des erreurs. Le lecteur Flash peut afficher des erreurs pendant son exécution. Avec un try catch, il est possible de capturer l’erreur et de l’afficher.

L’AS3 intègre 3 nouveaux types pour représenter les nombres :

  1. int : représente un entier 32 bit.
  2. uint : représente un entier non signé 32 bit.
  3. Number : représente un nombre décimal 64 bit.

Pour des astuces liées à l’optimisation des nombres, rendez-vous sur lab.polygonal.de.

Les valeurs par défaut undefined et null ont un comportement différent. Une variable renvoie undefined lorsqu’elle n’existe pas ou n’est pas typée. Et lorsqu’une variable est typée mais sans valeur, la machine virtuelle lui affecte automatiquement une valeur par défaut (null, false, NaN, 0 suivant le type des données).

Il y a 2 nouveaux types composites intégrés en ActionScript 3 :

  • Les expressions régulières : RegExp, pour effectuer des recherches complexes sur des chaines de caractères.
  • E4X (ECMAScript 4 XML) : l’AS3 intègre un objet XML en tant qu’objet natif.

Le mot clé is permet de tester le type d’une variable (Array, Object, MovieClip…).

Le mot clé as permet de transtyper un objet vers un type spécifique.

L’AS3 intègre également des nouvelles fonctionnalités liées à la définition des fonctions. Il est désormais possible de définir des paramètres, avec des valeurs par défaut, pour les fonctions.

Le mot clé …parametres permet de spécifier que la fonction reçoit un nombre variables de paramètres.

ActionScript 3 offre la possibilité d’itérer l’ensemble des propriétés d’un objet. Cela permet d’accéder directement au contenu de chacune des propriétés. La boucle for in boucle de la première à la dernière entrée, très pratique pour itérer au sein d’un tableau.

La boucle for each accède directement au contenu de chaque propriété. C’est donc beaucoup plus simple pour afficher le contenu d’un objet ou d’un tableau.

La classe Array bénéficie de nouvelles méthodes facilitant la manipulation des données (every, map, filter, some, indexOf, lastIndexOf)

Flash 9 ajoute un système de Garbage collector ou ramasse miettes. Ce mécanisme permet de supprimer de la mémoire des objets inutilisés.

L’Auteur termine ce chapitre en récapitulant les Bonnes Pratiques (typer les variables par exemple) et quelques subtilités de l’AS3 (void).

Chapitre 3 – Le modèle événementiel

L’ancien modèle évènementiel (d’AS1 et AS2) a été entièrement revu en AS3. Celui-ci repose sur l’implémentation native d’EventDispatcher.

Le principe de ce modèle évènementiel est tiré du modèle de conception ou Design Pattern appelé Observateur. Ce modèle est défini de la manière suivante :

Le modèle de conception observateur définit une relation entre objets de type un à plusieurs, de façon que, lorsque un objet change d’état, tous ceux qui en dépendent en soient notifiés et soient mis à jour automatiquement.

Observateur met en scène 3 acteurs :

  • Le sujet : c’est la source de l’évènement (un bouton, un clip).
  • L’évènement : un changement d’état au sein du sujet (le clic sur un bouton, la fin du chargement de données).
  • L’écouteur : c’est une fonction ou une méthode qui écoute les changements d’état du sujet. Il est appelé automatiquement lorsque le sujet change d’état et diffuse un évènement.

Plusieurs écouteurs peuvent écouter le même évènement. Et un seul écouteur peut être souscrit (ou informé) à différents évènements.

L’essentiel du modèle événementiel réside au sein d’une seule classe : EventDispatcher. C’est elle qui offre la possibilité à un objet de diffuser des événements. Tous les objets possèdent la capacité de diffuser des événements.

Tous les noms des événements sont désormais stockés dans des classes liées à chaque événement. Lorsque vous devez écouter un événement spécifique pensez immédiatement au type d’événement qui sera diffusé. Les classes résidant dans le paquetage flash.events constituent l’ensemble des classes événementielles en ActionScript 3.

  • flash.events.Event
  • flash.events.FullScreenEvent
  • flash.events.HTTPStatusEvent
  • flash.events.IOErrorEvent
  • flash.events.NetStatusEvent
  • flash.events.ProgressEvent
  • flash.events.SecurityErrorEvent
  • flash.events.StatusEvent
  • flash.events.SyncEvent
  • flash.events.TimerEvent


  • flash.events.FocusEvent
  • flash.events.IMEEvent
  • flash.events.KeyboardEvent
  • flash.events.MouseEvent
  • flash.events.TextEvent

A chaque événement diffusé, un objet est obligatoirement envoyé en paramètre à la fonction écouteur : un objet évènementiel.

L’objet évènementiel contient des informations liées à l’événement en cours de diffusion. Ces informations sont disponibles à travers les propriétés de l’objet évènementiel :

  • target : référence à l’objet cible de l’évènement. Permet de savoir qui est à l’origine de l’évènement.
  • currentTarget : référence à l’objet diffuseur de l’évènement. C’est toujours l’objet sur lequel nous avons appelé la méthode addEventListener.
  • type : contient le nom de l’évènement diffusé.

La classe Event est la classe parente de toutes les classes évènementielles. Elle définit la majorité des évènements diffusés en AS3 (Event.ENTER_FRAME, Event.COMPLETE…).

La méthode addEventListener est le seul et unique moyen pour écouter un événement. La méthode removeEventListener permet d’arrêter d’écouter un évènement.

Pour optimiser votre application (l’occupation mémoire), pensez à supprimer les écouteurs non utilisés.

Une fois un écouteur enregistré auprès d’un événement spécifique, toute nouvelle souscription est ignorée. Ceci évite qu’un écouteur ne soit enregistré plusieurs fois auprès d’un même événement.

Souvenez-vous, la propriété currentTarget fait toujours référence à l’objet sujet sur lequel nous avons appelé la méthode addEventListener. Cela permet d’effectuer un couplage faible entre les différents objets.

Pour spécifier un ordre de notification précis, il est possible d’utiliser le paramètre priority de la méthode addEventListener.

Chapitre 4 – La liste d’affichage

Toutes les classes graphiques sont stockées dans des emplacements spécifiques, au sein de 3 packages :

  • flash.display
  • flash.media
  • flash.text

Il y a plusieurs classes graphiques dans un souci d’optimisation. En effet, nous avons la possibilité d’utiliser l’objet le plus optimisé pour chaque besoin. Plus la classe graphique est enrichie plus celle-ci occupe un poids en mémoire important.

Par exemple, un simple objet Shape plus léger en mémoire suffit pour dessiner. De la même façon, nous préférerons utiliser un objet SimpleButton plutôt qu’un MovieClip pour la création des boutons.

Il existe 3 types d’objets graphiques primordiaux :

  • Les objets de type flash.display.DisplayObject

Tout élément qui peut être affiché est de type DisplayObject. La classe DisplayObject définit toutes les propriétés de base liées à l’affichage, la position, la rotation, l’étirement et d’autres propriétés plus avancées.

  • Les objets de type flash.display.InteractiveObject

La classe InteractiveObject définit les comportements liés à l’interactivité. Lorsqu’un objet hérite de la classe InteractiveObject, ce dernier peut réagir aux entrées utilisateur liées à la souris ou au clavier (par exemple les classes SimpleButton et TextField).

  • Les objets de type flash.display.DisplayObjectContainer

A la différence des DisplayObject, les DisplayObjectContainer peuvent contenir des objets graphiques.

Les classes DisplayObject, InteractiveObject, et DisplayObjectContainer sont abstraites et ne peuvent pas être instanciées ni héritées en ActionScript 3.

Lorsqu’une animation est chargée au sein du lecteur Flash, celui-ci ajoute automatiquement la scène principale du SWF en tant que premier enfant du conteneur principal, l’objet Stage. Cette hiérarchie définit la liste d’affichage de l’application.

Il est possible d’accéder à l’objet Stage à travers la propriété stage de tout DisplayObject.

Dorénavant, tous les objets graphiques s’instancient avec le mot clé new.

[codesyntax lang= »actionscript3″ title= »TextField » bookmarkname= »TextField »]

[/codesyntax]

Dès que vous créez un objet graphique, il n’est pas automatiquement ajouté à la liste d’affichage. Il existe seulement en mémoire. Pour l’afficher nous utilisons une des deux méthodes définies par la classe DisplayObjectContainer appelées addChild ou addChildAt. La profondeur des objets est gérée automatiquement.

Pour supprimer un DisplayObject de l’affichage nous appelons la méthode removeChild sur son conteneur, un objet DisplayObjectContainer. La méthode removeChild prend comme paramètre le DisplayObject à supprimer de la liste d’affichage et renvoie sa référence. L’appel de la méthode removeChild procède à une simple suppression du DisplayObject au sein de la liste d’affichage mais ne le détruit pas.

Pour libérer de la mémoire un DisplayObject supprimé de la liste d’affichage, nous devons passer ses références à null et attendre le passage du Garbage collector.

Pour changer l’ordre d’empilement des DisplayObject au sein de la liste d’objets enfants, nous utilisons la méthode setChildIndex. La méthode setChildIndex pousse d’un index vers le haut ou vers le bas les autres objets graphiques de la liste d’enfants. C’est le principe de l’effondrement des profondeurs.

De même, la suppression d’un DisplayObject au sein de la liste d’affichage provoque un effondrement des profondeurs.

Lorsqu’un objet graphique est supprimé de la liste d’affichage, ce dernier continue d’utiliser des ressources mémoires.

Il existe 2 méthodes pour ajouter des actions particulières à notre objet graphique :

  • Event.ADDED_TO_STAGE : diffusé lorsqu’un objet graphique est affiché. La méthode associée à cet évènement peut être utilisée pour initialiser automatiquement un objet (abonnement à un évènement).
  • Event.REMOVED_FROM_STAGE : diffusé lorsqu’un objet graphique est supprimé de l’affichage. La méthode associée à cet évènement peut être utilisée pour supprimer toutes les ressources consommées par l’objet (suppression de l’écoute d’un évènement).

Chapitre 5 – Symboles prédéfinis

Pour instancier un symbole prédéfini, nous utilisons le mot-clé new (comme pour un objet).

Les propriétés stage.width et stage.height renvoient la taille occupée par les DisplayObject présent au sein de la liste d’affichage.

Pour récupérer les dimensions de la scène, nous utilisons les propriétés stage.stageWidth et stage.stageHeight.

La fonction getDefinitionByName permet d’instancier une définition de classe de manière dynamique (avec une chaine de caractères).

[codesyntax lang= »actionscript3″ title= »getDefinitionByName » bookmarkname= »getDefinitionByName »]

[/codesyntax]

En ActionScript 3, il est préférable de créer des conteneurs afin de manipuler plus facilement un ensemble d’objets graphiques.

Par exemple, créez un nouvel objet Sprite() qui va contenir tous vos symboles graphiques. Pour supprimer les objets graphiques, il vous suffira de simplement supprimer tous les enfants du conteneur Sprite().

Pour instancier une image bitmap issue de la bibliothèque, il est obligatoire de spécifier une hauteur et une largeur de 0 pixels. A l’exécution, le lecteur affiche l’image à sa taille d’origine.

Une image est associée au type flash.display.BitmapData. Pour l’afficher, nous devons utiliser dans un objet flash.display.Bitmap.

[codesyntax lang= »actionscript3″ title= »monBitmapData » bookmarkname= »monBitmapData »]

[/codesyntax]

L’objet graphique Sprite est très proche du MovieClip. Il possède quasiment toutes ses fonctionnalités sauf le scénario et donc aucune des méthodes liées à sa manipulation (gotoAndStop, gotoAndPlay, etc). C’est une version simplifiée d’un MovieClip, un objet Sprite est beaucoup plus léger en mémoire.

Chapitre 6 – La propagation événementielle

Le concept de propagation événementielle est hérité du Document Object Model (DOM) du W3C.

La propagation évènementielle concerne uniquement les objets graphiques.

Le flot événementiel se divise en trois phases distinctes :

  • la phase de capture.
  • la phase cible.
  • la phase de remontée.

La phase de capture démarre de l’objet Stage jusqu’au parent de l’objet cible. La propriété target de l’objet événementiel renvoie toujours une référence vers l’objet cible. La propriété currentTarget de l’objet événementiel renvoie toujours une référence vers l’objet sur lequel nous avons appelé la méthode addEventListener.

Durant la propagation d’un événement, la propriété target ne change pas et fait toujours référence au même objet graphique (objet cible).

La propriété eventPhase de l’objet événementiel renvoie une valeur allant de 1 à 3 associées à chaque phase : CAPTURING_PHASE, AT_TARGET et BUBBLING_PHASE.

Pour déterminer la phase liée à un événement, la propriété eventPhase renvoie à une des 3 constantes de la classe flash.events.EventPhase. Il est possible d’intervenir sur la propagation d’un événement à l’aide des méthodes stopPropagation et stopImmediatePropagation. La méthode stopPropagation interrompt la propagation d’un événement mais n’empêche pas sa diffusion auprès des écouteurs du nœud en cours. La méthode stopImmediatePropagation interrompt la propagation d’un événement et empêche sa diffusion même auprès des écouteurs du même nœud.

La phase de remontée concerne uniquement les objets parents. Elle permet à un objet parent d’être notifié d’un événement provenant de l’un de ses enfants.

Un même écouteur peut être souscrit aux différentes phases d’un événement. La propriété Event.bubbles (Booléen) nous permet de savoir si un événement participe ou non à la phase de remontée. Lorsque nous avons abonné un écouteur à une phase spécifique, il est nécessaire de spécifier la même phase lors de l’appel de la méthode removeEventListener.

En attendant la suite de la chronique « Pratique d’ActionScript 3 »

Je vous invite à découvrir le site sur Pratique d’ActionScript 3 et également le site de l’auteur Thibault Imbert (ByteArray.org).

Achetez l’Édition Brochée du Livre Pratique d’ActionScript 3

Téléchargez l’Édition pdf du Livre Pratique d’ActionScript 3 :

Télécharger “Pratique ActionScript 3”

Pratique-d-ActionScript-3-version_0.1.4.zip – Téléchargé 1572 fois – 27,89 Mo

Télécharger l’ancienne version

Creative Commons License

Cette création est mise à disposition sous un contrat Creative Commons.

Si vous avez apprécié cet ouvrage, vous pouvez faire un don

Télécharger l’ouvrage (Août 2008 – v 0.1.4)

 

Chapitre 1 (5 pages) – Qu’est ce que l’ActionScript 3 ?

  • Histoire
  • 10 raisons de coder en ActionScript 3
  • Outils
  • La plateforme Flash

Chapitre 2 (36 pages) – Langage et API ?

  • Le langage ActionScript 3
  • Machines virtuelles
  • Traduction dynamique
  • Gestion des types à l’exécution
  • Erreurs à l’exécution
  • Nouveaux types primitifs
  • Valeurs par défaut
  • Nouveaux types composites
  • Nouveaux mots-clés
  • Fonctions
  • Contexte d’exécution
  • Boucles
  • Enrichissement de la classe Array
  • Ramasse-miettes
  • Bonnes pratiques
  • Autres subtilités
Chapitre 3 (33 pages) – Le modèle événementiel
  • L’histoire
  • Un nouveau modèle événementiel
  • Tout est événementiel
  • Ecouter un événement
  • L’objet événementiel
  • La classe Event
  • Les sous-classes d’Event
  • Arrêter l’écoute d’un événement
  • Mise en application
  • La puissance du couplage faible
  • Souplesse de code
  • Ordre de notification
  • Références faibles
  • Subtilités
Chapitre 4 (41 pages) – La liste d’affichage
  • Classes graphiques
  • Liste d’affichage
  • Instanciation des classes graphiques
  • Ajout d’objets d’affichage
  • Réattribution de parent
  • Liste interne d’objets enfants
  • Accéder aux objets d’affichage
  • Suppression d’objets d’affichage
  • Effondrement des profondeurs
  • Gestion de l’empilement des objets d’affichage
  • Echange de profondeurs
  • Désactivation des objets graphiques
  • Fonctionnement interne de la tête de lecture
  • Subtilités de la propriété stage
  • Subtilités de la propriété root
  • La notion de _level
Chapitre 5 (30 pages) – Symboles prédéfinis
  • Les types de symbole
  • Le symbole clip
  • La propriété name
  • Instanciation de symboles par programmation
  • Instanciation de symboles prédéfinis
  • Extraire une classe dynamiquement
  • Le symbole bouton (SimpleButton)
  • Le symbole graphique (Graphics)
  • Les images bitmap (BitmapData)
  • Afficher une image bitmap
  • Le symbole Sprite
  • Définition du code au sein d’un symbole
Chapitre 6 (33 pages) – La propagation événementielle
  • Concept
  • La phase de capture
  • La notion de noeuds
  • Déterminer la phase en cours
  • Optimiser le code avec la phase de capture
  • La phase cible
  • Intervenir sur la propagation
  • La phase de remontée
  • Ecouter plusieurs phases
  • La propriété Event.bubbles
  • Suppression d’écouteurs
Chapitre 8 (74 pages) – Programmation orientée objet
  • Concevoir autrement
  • Tout est objet
  • Notre première classe
  • Introduction aux paquetages
  • Définition de propriétés
  • Attributs de propriétés de classe
  • Attributs de classe
  • Le constructeur
  • Utilisation du mot clé this
  • Définition de méthodes
  • L’encapsulation
  • Mise en pratique de l’encapsulation
  • Les méthodes d’accès
  • Contrôle d’affectation
  • Méthodes en lecture-écriture
  • Cas d’utilisation de l’attribut static
  • La classe JoueurManager
  • L’héritage
  • Sous-type et super-type
  • Spécialiser une classe
  • Le transtypage
  • Surcharge
Chapitre 9 (83 pages) – Etendre les classes natives
  • Intérêts
  • Le vieil ami prototype
  • Etendre les classes non-graphiques
  • Etendre les classes graphiques
  • Accéder à l’objet Stage de manière sécurisée
  • Ajouter des fonctionnalités
  • Réutiliser le code
  • Classe dynamique
  • Un vrai constructeur
  • Créer des boutons dynamiques
Chapitre 10 (29 pages) – Diffusion d’événements personnalisés
  • L’histoire
  • La classe EventDispatcher
  • Mise en application
  • Choisir un nom d’événement
  • Etendre EventDispatcher
  • Stocker EventDispatcher
  • Passer des informations
  • Menu et événement personnalisé
Chapitre 11 (27 pages) – Classe de document
  • Intérêts
  • La classe MainTimeline
  • Classe de document
  • Limitations de la classe Sprite
  • Actions d’images
  • Déclaration automatique des occurrences
  • Déclaration manuelledes occurrences
  • Ajouter des fonctionnalités
  • Initialisation de l’application
  • Accès global l’objet Stage
  • Automatiser l’accès global à Stage
Chapitre 12 (81 pages) – Programmation bitmap
  • Bitmap et vectoriels
  • Couleurs
  • Manipuler les couleurs
  • La classe BitmapData
  • Codage des couleurs
  • Gérer les ressources avec le profiler
  • La classe Bitmap
  • Réutiliser les données bitmap
  • Libérer les ressources
  • Calculer le poids en mémoire
  • Limitations mémoire
  • Images en bibliothèque
  • Peindre des pixels
  • Lire des pixels
  • Accrochage aux pixels
  • Le lissage
  • Mise en cache des bitmap à l’exécution
  • Effets pervers
  • Filtrer un élément vectoriel
  • Filtrer une image bitmap
  • Animer un filtre
  • Rendu bitmap d’objets vectoriels
  • Optimiser les performances
Chapitre 13 (84 pages) – Chargement de contenu
  • La classe Loader
  • Charger un élément externe
  • La classe LoaderInfo
  • Interagir avec le contenu
  • Créer une galerie
  • La composition
  • Redimensionnement automatique
  • Gestion du lissage
  • Précharger le contenu
  • Interrompre le chargement
  • Communiquer entre deux animations
  • Modèle de sécurité du lecteur Flash
  • Programmation croisée
  • Utiliser un fichier de régulation
  • Contexte de chargement
  • Contourner les restrictions de sécurité
  • Bibliothèque partagée
  • Désactiver une animation chargée
  • Communication AVM1 et AVM2
Chapitre 14 (98 pages) – Chargement et envoi de données
  • La classe URLLoader
  • Charger du texte
  • L’encodage URL
  • Charger des variables
  • Charger des données XML
  • Chargement de données et sécurité
  • Charger des donnés binaire
  • Concept d’envoi de données
  • Envoyer des variables
  • la méthode GET ou POST
  • Envoyer des variables discretement
  • Renvoyer des données depuis le serveur
  • Aller plus loin
  • Envoyer un flux binaire
  • Télécharger un fichier
  • Publier un fichier
  • Publier plusieurs fichiers
  • Création de la classe EnvoiMultiple
  • Retourner des données une fois l’envoi terminé
  • Aller plus loin
Chapitre 15 (32 pages) – Communication externe
  • Conteneur et contenu
  • Passer des variables
  • Intégration par JavaScript
  • La propriété parameters
  • Les FlashVars
  • Passer des variables dynamiquement
  • Accéder facilement aux FlashVars
  • Appeler une fonction
  • L’API ExternalInterface
  • Appeler une fonction externe depuis ActionScript
  • Appeler une fonction ActionScript depuis le conteneur
  • Communication et exceptions
  • Communication et securité
Chapitre 16 (82 pages) – Le texte
  • Le texte dans Flash
  • Afficher du texte en Flash
  • Afficher du texte par programmation
  • Les types de champ texte
  • Formatage du texte
  • Rendu HTML
  • La classe TextFormat
  • Etendre la classe TextField
  • La classe StyleSheet
  • Modifier le contenu du champ texte
  • Remplacer du texte
  • L’événement TextEvent.LINK
  • Charger du contenu externe
  • Exporter une police dans l’animation
  • Charger dynamliquement une police
  • Détecter les coordonnées d’un caractère
  • Créer un éditeur de texte enrichi
Chapitre 17 (73 pages) – Son et vidéo
  • Lecture de sons
  • Lire un son provenant de la bibliothèque
  • Lire un son dynamique
  • La classe SoundLoaderContext
  • Transformation du son
  • Modification globale du son
  • Lire le spectre d’un son
  • Transformée de Fourier
  • Le format MPEG-4 audio (AAC)
  • La vidéo dans Flash
  • Le format MPEG-4 vidéo (H.264)
  • La classe Video
  • Transformation du son lié à un objet NetStream
  • Mode plein écran
Chapitre 18 (39 pages) – Les sockets
  • Une passerelle universelle
  • Créer un serveur de socket XML
  • La classe XMLSocket
  • Créer un forum de discussion
  • La classe Socket
  • Créer un serveur de socket binaire
  • Echanger des données
Chapitre 19 (74 pages) – Flash Remoting
  • La technologie
  • Un format optimisé
  • Passerelle Remoting
  • Déploiement
  • Le service
  • Se connecter au service
  • La classe Responder
  • Appeler une méthode distante
  • Echanger des données primitives
  • Echanger des données composites
  • Echanger des données typées
  • Envoyer un e-mail
  • Exporter une image
  • Se connecter à une base de données
  • Securité
  • La classe Service
Chapitre 20 (44 pages) – ByteArray

  • Le codage binaire
  • Position et poids du bit
  • Octet
  • Ordre des octets
  • La classe ByteArray
  • Méthode de lecture et d’écriture
  • Copier des objets
  • Ecrire des données au format texte
  • Lire des données au format texte
  • Compresser des données
  • Sauvegarder un flux binaire
  • Générer un PDF

Chapitre 21 (30 pages) – Application finale

  • Décomposer l’application
  • Gérer les chemins d’accès
  • Création d’un fichier XML de configuration
  • Utiliser les librairies partagées
  • Générer et charger les librairies
  • Utiliser les librairies dans l’ensemble de l’application