banner

Précédent   InfographiK - Communauté Graphique > FLASH & ACTION SCRIPT > Débuter avec Flash > Les cours de base

Réponse
 
LinkBack Outils de la discussion
  #1 (permalink)  
Vieux 04/04/2007, 12h26
Avatar de Smike
Administrateur
 
Date d'inscription: May 2002
Localisation: 26
Messages: 3 008
Zoom [ActionScript] Le langage actionscript 2.0

Pour ceux qui développent avec Flash et ActionScript 1.0, l'annonce de la version 2.0 de ce langage (avec Flash Mx 2004) à due vous interpeler, et vous devez vous interroger: qu'il y a t il de nouveau ?, quelles sont ces limites ? ces nouvelles possibilités ?

Biensûr des zones d'ombres arrivent aussi, le passage en AS2.0 va-t-il nécessiter un re-développement de mes applications ? De plus il faudra re-apprendre la nouvelle syntaxe, peut-être une nouvelle logique de développement, ce qui pourrait en freiner plus d'un.

Cet article à pour but de vous stimuler, de vous donner l'envie de rentrer dans ce nouvel univers, et de dissiper vos craintes sur l'ActionScript 2.0.

(Au niveau de la terminologie, les développements que vous avez réalisé sous Flash 5 et Flash Mx sont maintenant considérés comme des développement en ActionScript 1.0)

L'actionScript 2.0 est une nouveauté apportée par les version Mx 2004 et Mx 2004 Pro, et ressemble, dans la plupart des cas, à l'ActionScript 1.0. Ce qui veut dire la majorité des choses que vous connaissez en AS1.0 est utilisable en AS2.0. (un petit soulagement commence à se faire entendre....Wink). En fait, tant qu'on ne passe pas au développement de classe en ActionScript, les différences entre AS1.0 et AS2.0 sont presques négligeable. De plus les version Mx 2004 (+Pro) permettent de continuer le développement en AS1.0, donc si vous ne voulez pas encore toucher au développement de classe, plus généralement au développement Objet, il n'y a aucun problème.

Mais alors quels sont ces nouveautés que nous apporte AS2.0 ? Il ya bien des choses nouvelles tout de même ? Biensur....Typage fort

Les développeurs AS1.0 avaient beaucoup de chance (enfin si on peu dire ça) avec le manque de vérification des types de variables à l'intérieur de leur code. En effet, en AS1.0 il est tout à fait possible de déclarer une variable, lui assigner une chaine de caractère, et quelques lignes plus bas, lui assigner un nombre :

ActionScript Code:
  1. maVariable = "Flash Mx 2004";
  2. maVariable = 6;

Ce qui ets tout à fait incohérent, notre variable doit toujours contenir une chaine de caractère et pas autre chose. Dans un cas plus général, il faut toujours connaitre le type d'une variable à n'importe quel point du programme. Imaginez que vous vouliez afficher le contenu d'une variable pour l'utilisateur. Cette variable est censée contenir une chaine de caractère, donc simple, on trace la variable, mais si on a pas de chaine de caractère mais qu'on a à la place un objet, ou un MovieClip, ..., alors l'affichage sera impossible ou le résultat sera incohérent.

Flash Mx 2004 permet maintenant de vérifier ces incohérences au moment de la compilation du code. En effet, il arrivait souvent de perdre des heures et des heures à trouver le bug, l'endroit où notre variable avait perdu "son sens". Maintenant c'est terminé, l'AS2.0 permet de vérifer le type de nos variables avant de réaliser notre "exécutable", notre .swf.

Pour ceci, il faut déclarer nos variables "proprement" avec la nouvelle syntaxe. Pour déclarer une variable en AS2.0, nous avons besoins du mot-clé var, suivi du nom de la variable, puis de :, et enfin le type de notre variable.

Par exemple, pour notre variable, on aurait :

ActionScript Code:
  1. var maVariable:String = "Flash Mx 2004";

Maintenant, si dans votre code vous affectez autre chose qu'une chaine de caractère à cette variable, par exemple:

ActionScript Code:
  1. maVariable = 6;

Vous aurez un message d'erreur du compilateur, au moment de l'export, du type

Compilateur a écrit :

ActionScript Code:
  1. **Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 2: Type mismatch in assignment statement: found Number where String is required.
  2. maVariable = 6;
  3. Total ActionScript Errors: 1 Reported Errors: 1

Attention cependant à utiliser le mot-clé var pour la déclaration de la variable uniquement. Si vous utiliser une nouvelle fois ce mot-clé, par exemple :

ActionScript Code:
  1. var maVariable = 6;

Vous écraserez alors l'ancienne variable et le typage fort sera perdu.

Les avantages du typage fort :
  1. . Comme nous l'avons vu précédemment, le typage permet un suivi de nos variable tout au long de notre code. Ce qui implique que notre code devient plus clair, plus stable, et surtout la maintenance y est beaucoup plus simple. Le type des variables peut souvent suffir pour comprendre comment et pourquoi utiliser cette variable.
  2. . Le Code Hints est possible avec le typage fort.
    Si auparavant le code hint était réservé au variable suivie de certains suffixe (ex: _mc pour les MovieClip), nous avons plus besoins de ces suffixes pour que le code hint fonctionne. Si une variable est de type Color par exemple, nous pourrions avoir: Ce qui est souvent appréciable lors du développement.

Bien entendu, pour compléter le typage fort et accroitre encore la lisibilité du code, sa maintenance, il est conseillé d'utiliser un système de notation pour nos variables. Disons que sert de base, mais encore une fois, rien d'universelle. Donc si le coeur cous en dit, vous pouvez très bien faire votre propre système de notation. Ceci étant, je trouve celui de Joey Lott très bien, et je l'utilise maintenant tout le temps. Qui sait..le standart est peut-être là....??

Les types de sorties de fonction :
Il est maintenant possible de réaliser un typage fort sur les "retour" de fonction. En effet, comme pour les variables, avant c'était un peu la jungle, et on n'obtenais pas toujours les résultats souhaités. AS2.0 permet, comme pour les variables, de vérifier la compatibilité des sorties de nos fonctions.

La déclaration du type de retour est déclaré presque comme un type de variable :

ActionScript Code:
  1. function multiply(nA:Number, nB:Number):Number {
  2. return (nA * nB);
  3. }

Comme vous pouvez le constater, nous avons toujours les : suivi du type souhaité.
On remarquera aussi que les paramètres d'entrée sont aussi typés, seuls des nombres peuvent être acceptés dans cette fonction. Vérifions ceci de suite :

ActionScript Code:
  1. trace(multiply(6, "Flash MX 2004"));

à la compilation on aura / Compilateur a écrit :

ActionScript Code:
  1. **Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 5: Type mismatch.
  2. trace(multiply(6, "Flash MX 2004"));
  3. Total ActionScript Errors: 1 Reported Errors: 1

Revenons à notre paramètre de sortie maintenant, créons volontairement une erreur en modifiant notre fonction multiply de cette façon :

ActionScript Code:
  1. function multiply(nA:Number, nB:Number):Number {
  2. return "Flash MX 2004";
  3. }

On demande donc une sortie sous forme de nombre (Number) mais dans notre fonction on retourne (return) une chaine de caractère. Le compilateur reconnait cette erreur :

Compilateur a écrit:

ActionScript Code:
  1. **Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 2: The expression returned must match the function's return type.
  2. return "Flash MX 2004";
  3. Total ActionScript Errors: 1 Reported Errors: 1

Le type de sortie de la fonction, ne correspond pas au type demandé !

Enfin, pour mélanger un peu tout ça, si on affecte à une variable de type chaine, le résultat (Number) d'une fonction, le compilateur va aussi reconnaitre cette erreur. Exemple :

ActionScript Code:
  1. function multiply(nA:Number, nB:Number):Number {
  2. return (nA * nB);
  3. }

on appel la fonction de cette manière :

ActionScript Code:
  1. var sProduct:String = multiply(6, 5);

alors à la compilation on aura / Compilateur a écrit :

ActionScript Code:
  1. **Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 5: Type mismatch in assignment statement: found Number where String is required.
  2. var sProduct:String = multiply(6, 5);
  3. Total ActionScript Errors: 1 Reported Errors: 1

Beaucoup plus tard, vous verrez que le compilateur peut aller très très loin dans ce genre de vérification...

Je rapelle toutefois que cette vérification se fait au moment de la compilation et non pas au RunTime, c'est à dire qu'une fois notre swf généré.

Conclusions :
Dans cette première partie nous avons donc essentiellement parlé de cette nouvelle notion de typage fort. Cette notion existe déjà depuis longtemp dans d'autres langage comme C++/ C#/Java, ce n'est donc qu'une évolution logique de l'ActionScript. Il est vrai qu'au tout début c'est assez déroutant, et on pourrait, - je dis bien pourrais -, penser que c'est une perte de temps, mais il en ai rien. Rappelons les principaux avantage du typage fort (ou Strong typing)
  • Reduction des erreurs due à de mauvaise affectation (variable, fonction)
  • Code plus clair, plus lisible, plus compréhensible = maintenance simplifé
  • Code hinting possible sans se soumettre au notation avec suffixe.

Cette première partie est maintenant terminé, les bases sont posées, nous allons pouvoir attaquer les choses plus sérieuse comme la création de classe en AS2.0.


Source : Adddvance.net
__________________
[La musique fait danser les consciences]
Réponse avec citation
Réponse

Outils de la discussion

Règles de messages
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui



Fuseau horaire GMT +2. Il est actuellement 05h40.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0 Tous droits réservés.
Version française #13 par l'association vBulletin francophone

Communauté Graphique
CNIL : 1130886