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 / ActionScript Technology Center /

Astuces pour s'initier à ActionScript 3.0

par Emmy Huang

Emmy Huang
  • Adobe

Modifié

27 June 2006

Partage

Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn
Signet
Imprimer

Tags

Flex

Configuration requise

Niveau de l'utilisateur

Intermédiaire

ActionScript 3.0 est le puissant langage de programmation orienté objet qui sert de modèle de programmation au moteur d'exécution de Flash Player. Si vous utilisez déjà ActionScript 1.0 ou 2.0, il est important d'identifier les différences entre les langages avant de commencer à développer des applications avec ActionScript 3.0.

Remarque : Pour plus d'informations, consultez la liste des différences entre ActionScript 2.0 et ActionScript 3.0, dans le guide de référence du langage Flex 2.0.

Vous trouverez ci-dessous une liste d'astuces et de problèmes courants qui faciliteront la transition vers ActionScript 3.0.

  • Déclarez des types pour l'ensemble des variables, paramètres et valeurs de retour. Bien qu'il ne soit pas obligatoire de déclarer un type pour l'ensemble des variables, paramètres et valeurs de retour, cette méthode est toutefois conseillée. Elle permet au compilateur d'envoyer des messages d'erreur plus précis. Dans la mesure où la machine virtuelle sait à l'avance quels types sont utilisés, les performances d'exécution sont également améliorées. Afin d'attirer l'attention de l'utilisateur sur l'importance de cette procédure, nous avons choisi d'afficher un avertissement par défaut.
  • La valeur par défaut des déclarations pour lesquelles aucun spécificateur d'accès n'a été défini est désormais package internal et non public. Le spécificateur d'accès par défaut pour les déclarations est donc internal, et non plus public. Ainsi, seul le package contenant la définition a accès à cette dernière, et non tout le code. Ceci se rapproche d'autres langages tels que Java. Le changement de la valeur de déclaration par défaut — ActionScript 2.0 utilisait public — sera vraisemblablement source d'erreurs pour les programmeurs. Il est recommandé de toujours ajouter un spécificateur d'accès aux déclarations pour plus de clarté. Pour vous encourager à procéder ainsi, le compilateur ActionScript 3.0 affiche un message d'avertissement lorsque aucun spécificateur d'accès n'est défini.
  • Par défaut, les classes sont scellées. Il est donc impossible d'ajouter des propriétés de façon dynamique lors de l'exécution. Vous avez désormais le choix entre des classes dynamiques ou des classes scellées. Les classes dynamiques, contrairement à leurs homologues, permettent d'ajouter des propriétés dynamiques au moment de l'exécution. Dans la mesure où aucune table de hachage interne n'est nécessaire pour stocker des propriétés dynamiques lorsque vous utilisez des classes scellées, vous économisez de la mémoire. Les messages d'erreur transmis par le compilateur sont également plus précis. La classe de déclaration class Foo est scellée. Pour déclarer une classe dynamique, utilisez le mot-clé dynamic par exemple, dynamic class Foo .
  • Utilisez des déclarations package pour ajouter une définition de classe à un package. package est un nouveau mot-clé dans ActionScript 3.0.

    Code ActionScript 2.0 :

class mx.controls.Button { ... }

Code ActionScript 3.0 :

package mx.controls { class Button { .. } }

Comme avec ActionScript 2.0, vous devez placer une classe public dans un fichier portant le même nom que la classe. Bien que vous puissiez déclarer plusieurs classes dans un même fichier, seule une de ces classes peut être publique et le nom du fichier doit porter le nom de cette même classe.

  • Importez les classes, même si les références aux classes sont pleinement qualifiées. Pour utiliser une classe MyPackage.MyClass, vous devez l'importer comme suit :
import MyPackage.MyClass;

Cela s'applique même si toutes les références sont pleinement qualifiées à l'aide du nom complet MyPackage.MyClass. Dans ActionScript 3.0, l'instruction import indique que vous souhaitez utiliser une définition de classe provenant d'un autre package, alors que dans ActionScript 2.0, elle servait uniquement à créer des noms abrégés. Dans la version 3.0, le nom de classe complet est uniquement utilisé pour plus de clarté et non comme substitut de l'instruction import.

Vous pouvez également importer toutes les définitions d'un package à l'aide du caractère générique * :

import MyPackage.*;

Il est toutefois conseillé d'importer les définitions une à une afin d'éviter toute ambiguïté concernant leur utilisation dans le code.

  • Marquez toujours les remplacements de méthode. L'utilisation du mot-clé override permet d'éviter les problèmes courants liés au remplacement des méthodes (erreurs dans la spécification du nom ou de la signature de la méthode remplacée ou modification du nom d'une méthode remplacée). Elle permet également d'identifier clairement les méthodes remplacées en lisant le code. Dans la mesure où le remplacement d'une méthode par une autre est spécifié par le mot-clé override, le compilateur peut effectuer une validation plus appropriée. Le mot-clé utilisé dans ActionScript 3.0 s'inspire du mot-clé override utilisé dans le langage C#.
  • Déclarez des types de retour dans les fonctions. Il est recommandé de déclarer un type de retour pour chaque fonction. Pour des raisons de sécurité, un message d'avertissement s'affiche si aucun type de retour n'est mentionné. Cela permet d'éviter d'oublier accidentellement de spécifier un type de retour, auquel cas le type de retour Object est utilisé par défaut. Si vous ne souhaitez pas que la fonction renvoie de valeur, déclarez le type de retour void.
  • Des délégués sont désormais intégrés au langage pour faciliter la distribution des événements. Dans ActionScript 2.0, vous deviez utiliser la classe mx.utils.Delegate ou avoir recours à d'autres solutions pour acheminer des événements vers les méthodes :
import mx.utils.Delegate; myButton.addEventListener("click", Delegate.create(this, onClick));

Dans ActionScript 3.0, l'instance d'objet dont est extraite la référence d'une méthode est automatiquement mémorisée. Cette procédure est appelée fermeture de méthode et peut être comparée à un délégué automatique. Vous pouvez donc écrire le code comme suit :

myButton.addEventListener("click", onClick);
  • Le fait de déréférencer une référence nulle ou non définie entraîne désormais une exception. Dans les anciennes versions d'ActionScript, cette opération était ignorée et évaluée comme non définie. Avec cette nouvelle version, une exception TypeError est générée. Cela permet de vérifier qu'aucune référence nulle ou non définie n'est déréférencée dans le code et de s'assurer qu'aucun comportement d'échec silencieux ne s'applique. Ce nouveau comportement d'exception est conforme à la spécification ECMAScript.
  • Utilisez les options -verbose-stacktraces et -debug . Si vous définissez les options de ligne de commande -verbose-stacktraces et -debug lors de la compilation, les noms de fichier et numéros de ligne s'affichent dans les alertes d'exécution Flash Player. Lorsqu'une erreur d'exécution se produit, une boîte de dialogue décrivant l'erreur et indiquant la pile d'appels concernée s'affiche. L'utilisation des options -verbose-stacktraces et -debug permet d'identifier plus facilement la source de l'erreur dans le code.
  • Déclarez explicitement les liaisons de propriétés. La liaison des propriétés n'est plus disponible par défaut. Vous devez spécifier que les propriétés peuvent être liées à l'aide de la balise de métadonnées [Bindable].
  • L'API de Flash Player a été réorganisée en packages. Par le passé, toutes les classes et fonctions de l'API de Flash Player étaient globales. Il existe désormais plusieurs packages tels que flash.display, flash.events, flash.ui, etc. MovieClip est, par exemple, devenu flash.display.MovieClip, et getTimer et setInterval sont désormais compris dans le package flash.utils.
  • Utilisez la nouvelle classe Timer au lieu de setInterval/setTimeout. La nouvelle classe Timer est mieux appropriée aux événements temporels que les fonctions setInterval et setTimeout. Cette nouvelle classe présente un certain nombre d'avantages par rapport à setInterval. Elle permet notamment de ne pas avoir à utiliser des identifiants d'intervalle et fournit une interface orientée objet plus moderne. Il est donc recommandé d'utiliser la classe Timer au lieu de setInterval et setTimeout.
  • Veillez à créer des sous-classes d'événements. Les événements sont désormais fortement typés et doivent être définis comme des sous-classes de la nouvelle classe de base Event. Cette nouvelle classe permet d'obtenir un système d'événements plus clair et plus efficace. Toutefois, cela signifie que vous ne pouvez plus utiliser d'instance générique de la classe Object lors de la distribution des événements, de même que vous ne pouvez plus utiliser l'abréviation littérale de l'objet, par exemple {type: 'customEvent' }.

    Au lieu de créer une classe Object générique, vous devez désormais utiliser la classe Event (par exemple, dispatchEvent(new Event ('myCustomEventType'))). Pour ajouter des propriétés, vous devez définir des sous-classes de Event. L'abandon de l'utilisation d'Object permet une meilleure vérification des types et accroît l'efficacité.

  • Les éléments visuels doivent étendre la classe DisplayObject et peuvent être définis comme toute autre classe. Vous pouvez désormais créer des composants de façon dynamique à l'aide du mot-clé new et les ajouter à la liste d'affichage à l'aide de addChild. L'utilisation de createChild est à éviter. Vous pouvez instancier les entités visuelles, dont TextField, comme les autres objets et les ajouter à la liste d'affichage en toute simplicité à l'aide de addChild ou addChildAt. En conséquence, certaines API telles que createEmptyMovieClip et createTextField ont disparu. Pour créer un nouveau champ de texte, vous devez utiliser new TextField au lieu de createTextField.
  • Il est désormais recommandé d'utiliser E4X (ECMAScript for XML) pour manipuler du code XML dans Flash. L'extension E4X est bien plus puissante que l'ancienne classe XML Flash. Elle s'intègre également mieux au langage et offre tout un ensemble de nouvelles fonctionnalités. L'ancienne classe XML Flash est toutefois toujours disponible. Si vous préférez utiliser l'ancienne API XML, elle est disponible dans le package flash.xml sous le nouveau nom XMLDocument.
  • Utilisez la méthode toXMLString avec E4X. La méthode toString ne permet pas nécessairement de renvoyer le marquage XML complet de l'objet. Pour ce faire, utilisez la méthode toXMLString. La méthode toString renvoie une valeur de chaîne adaptée à l'objet XML. L'objet XML n'est pas nécessairement sérialisé dans son intégralité. Pour obtenir le marquage XML complet, appelez la méthode toXMLString.
  • La boucle for...in n'énumère plus les propriétés et les méthodes déclarées par une classe. Seules les propriétés dynamiques d'un objet sont énumérées. ActionScript 3.0 intègre un nouveau système d'introspection d'objet plus avancé appelé describeType. Utilisez-le pour effectuer des introspections d'objets dans ActionScript 3.0.
  • L'objet racine d'un fichier SWF peut désormais être une instance de la classe personnalisée de votre choix. Dans ActionScript 2.0, un tel objet était toujours de classe MovieClip. Dans ActionScript 3.0, la classe de ce type d'objet peut être n'importe quelle sous-classe de Sprite. Vous pouvez définir une classe comme DocumentRoot d'un fichier SWF. Lors de son chargement, le fichier SWF instancie cette classe de façon à l'utiliser comme objet racine.

Nous remercions notre communauté de développeurs pour leur assistance dans la rédaction de cet article. Bien que cette liste ne soit pas exhaustive, elle vous aidera à démarrer avec ActionScript 3.0. Si vous utilisez d'autres langages orientés objet, ces astuces constitueront essentiellement des rappels. Vous pouvez en effet mettre directement à profit dans ActionScript 3.0 les compétences acquises avec ces langages.

Si vous n'avez jamais utilisé de langage orienté objet et que vous débutez avec ActionScript 3.0, ces astuces vous seront certainement très utiles. Nous vous recommandons de les conserver à portée de main. Bonne programmation !

Tutorials & Samples

Tutorials

  • Flash iOS Apps Cookbook excerpt: ActionScript optimization
  • Introduction to Robotlegs – Part 3
  • Introduction to Robotlegs – Part 2
  • Introduction to Robotlegs – Part 1

Samples

  • ActionScript 3 samples for Flash Professional CS5

ActionScript Blog

More
04/22/2012 ActionScript 3.0 BitmapData, Clone, and ColorTransform
04/06/2012 Click in the Starling Framework
04/06/2012 Flash Player 11.3 Beta and Adobe AIR 3.3 Beta available [ FP...
03/28/2012 AS3 Drawing API oddity

ActionScript Cookbook

More
03/20/2012 PDF Portfolio Navigational TOC
02/29/2012 Embed Stage3D content inside Flex application components
02/13/2012 Randomize an array
02/09/2012 Using Camera with a MediaContainer instead of VideoDisplay

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