TUTORIEL FLASH 
ActionScript 2.0 : la programmation orientée Objet (1)
Les différences entre AS1 et AS2 sont peu nombreuses, mais cruciales pour appliquer correctement les mécanismes Objet. Explication de la syntaxe et de la construction de classe pour Flash MX 2004. (22/07/2005)
ActionScript (AS) a bien évolué entre Flash MX et MX 2004, particulièrement en ce qui concerne la gestion Objet. Cette évolution n'est pas innocente, et correspond à celle suivie par le standard ECMA Script (JavaScript) : là où ActionScript 1.0 (Flash 5 et MX) étaient basés sur ECMA Script 3 (équivalent à JavaScript 1.5), la version 2.0 du langage de Flash est basée sur ECMA Script 4 (duquel JavaScript 2.0 devrait être tiré).

Les différences entre les deux standards ECMA Script restent minimales : le système de typage est plus poussé, et les classes sont mieux construites, pour simplifier. Autrement, les deux standards restent très proches, et il en est de même, par extension, pour AS1 et AS2. AS2 peut donc être jugé légèrement plus compliqué que AS1, mais guère plus - au point qu'une fois compilé, les deux langages donnent le même code binaire au sein du fichier SWF.

Nous allons voir dans cet article les points à enregistrer.

Syntaxe

La syntaxe est probablement ce qui choque le plus pour ceux qui découvrent AS2 après avoir connu AS1 (ou simplement JavaScript), et pour commencer le typage des données. Tout comme JavaScript 1.x, AS1 disposait d'un typage faible, c'est à dire qu'une variable pouvait contenir tout type de données sans problème, et même passer d'un type à l'autre. Le typage fort de AS2, s'il peut compliquer la tâche pour une application simple, permet de mieux se dépêtrer des possibles mélanges lors de la création d'applications majeures.

En ActionScript 2.0, comme décidé pour ECMA Script 4, la déclaration du type de données se fait de la manière suivante :

var monBeauSapin:String;
monBeauSapin = "Roi des forêts";


Cette syntaxe "deux-points" diffère largement de ce à quoi sont habitués les développeurs Java ou C#, à savoir :

String monBeauSapin;
monBeauSapin = "Roi des forêts";


Cette différence résulte d'un choix du comité ECMA Script, et n'est donc pas imputable aux ingénieurs Macromedia...
Le type d'une variable n'a pas à être redéclarée après une première utilisation : il suffit d'appeler la variable sans la déclaration de type pour pouvoir s'en servir :

for (var i:Number = 0; i <= 10; i++) { ... }
for (i = 10; i >= 0; i--) { ... }


Classes
Outre les classes habituelles (String, Boolean, Number) ou spécifiques (TextField, Date, Color, ScrollPane, RadioButton...), la nouvelle approche Objet de AS2 lui autorise la création de types par le biais de nouvelles classes et d'interfaces.

La syntaxe de création de classe a de fait également évolué, et se rapproche de Java avec les propriétés public, private et static, par exemple :

class Vehicule {
  public var vitesse:Number;
  public nbrPassagers:Number;
  private proprietaire:String;

  public function Véhicule() {
    vitesse = 0;
    nbrPassagers = 0;
    }


  public demarrer():Boolean { ... }
  public setVitesse(vitesse:Number):Boolean { ... }
  
  private checkEssence():Number { ... }
  private allumeRadio():Void { ... }
  }


La création de sous-classe est des plus classiques :

class Voiture extends Vehicule {
  public var nbreRoues:Number = 4;
  ...
  }

var maTwingo:Voiture = new Voiture();
maTwingo.nbrPassagers = 1;


  Forum

Réagissez dans les forums de JDN Développeurs

À noter que là où AS1 autorisait l'ajout de méthode à une classe via l'objet __prototype__, AS2 interdit désormais l'ajout d'une méthode à la plupart des classes lors de l'exécution : toutes les méthodes doivent être définies dans leurs classes avant exécution.

Par ailleurs, une méthode peut être invoquée avec un mauvais nombre d'arguments : le compilateur ne fait que vérifier que ceux-ci ont le bon type ; les arguments en trop ne sont pas pris en compte, ceux manquants doivent être gérés par la fonction (via la méthode arguments.length).
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages