introdution à l’ actionscript 3seriousgames.lip6.fr/site/img/pdf/introductionas3.pdf ·...
TRANSCRIPT
Historique
• 1998 : Prémisses – quelques « actions » : gotoAndPlay, gotoAndStop,
nextFrame…
• 2000-2004 : ActionScript 1.0 – Boucles, variables, fonctions…
• 2003-2006 : ActionScript 2.0 – Types (compilation), pseudo classes (prototype)…
• 2006-2013 : ActionScript 3.0 – Types (exécution), héritage à base de classe…
2
Machine virtuelle
• Langage compilé et interprété – Byte-code (pseudo-
code)
– Interpréteur
• Deux machines virtuelles – AVM1 (AS1 et AS2)
– AVM2 (AS3)
Code source (.as)
Pseudo-code (.swf)
Compilation
Exécution
3
Technologies associées
• Action Script
– Langage de programmation
• Flash
– Player de fichiers « swf » (machine virtuelle)
• Flex
– Encapsulation dans des pages Web
• AIR
– Application « desktop »
4
Environnement de développement minimum
• FlashDevelop 5.0.1
– Windows
– Les API standard
– Un compilateur, débogueur, frameworks (Flex)…
• Java
5
Mots clés réservés en As3
as break case catch class const continue
default delete do else extends false finally
for function if implements import in instanceof
interface internal is native new null package
private protected public return super switch this
throw to true try typeof use var
void while dynamic each finale get include
namespace native override set static abstract boolean
byte cast char debugger double enum export
float goto intrinsic long prototype short synchronized
throws to transient type virtual volatile
6
Les types de données fondamentaux
• String : une valeur textuelle
• Trois types de données numériques – Number : toutes les valeurs numériques (y
compris les nombres à virgule)
– int : un nombre entier sans fraction
– uint : un nombre entier « non signé » (uniquement les nombres positifs)
• Boolean : une valeur vrai ou fausse
• Object : classe mère à toutes les autres classes
7
Les types de données fondamentaux
• Valeurs par défaut
Type de données Valeur par défaut
Boolean false
int 0
Number NaN
String null
uint 0
Object null
* (non typé) undefined
Toutes les autres classes, y compris celles définies par l’utilisateur null
8
Eléments syntaxiques
• Sensible aux majuscules et minuscules
• Instruction simple, terminée par « ; »
• Instruction composée, encadrée par « { } »
• Déclaration d’un variable, mot clé « var »
• Déclaration d’une constante, mot clé « const »
• Commentaires : « // » ou « /*..*/ »
9
Fonction trace
• Pour afficher des données sur la sortie standard : trace(..);
• Résultat de l’affichage :
10
Opérateurs et priorités
[] Initialise un tableau {x:y} Initialise un objet
() Regroupe des expressions f(x) Appelle une fonction
new Appelle un constructeur x.y x[y] Accède à une propriété
++ Incrémentation -- Décrémentation
+ Uniaire + - Unaire - (négation)
! Non logique delete Supprime une propriété
typeof Renvoie les informations de type void Renvoie une valeur non définie
* Multiplication / Division
% Modulo + Addition
- Soustraction
11
Opérateurs et priorités
< Inférieur à > Supérieur à
<= Inférieur ou égal à >= Supérieur ou égal à
as Vérifie le type de données in Vérifie les propriétés des objets
instanceof Vérifie la chaine de prototype is Vérifie le type de données
== Egalité != Inégalité
&& ET logique || OU logique
= Affectation *= Affectation de multiplication
/= Affectation de division %= Affectation modulo
+= Affectation d’addition -= Affectation de soustraction
12
Opérateurs (précisions)
• is
• instanceof
• as
13
Instructions conditionnelles
• if .. else .. • swicth
14
Boucles
• for
• while
• do..while
• for..in
• for..each..in
15
Fonctions
• Définition sous forme d’instruction
• Définition sous forme d’expression (littéral de fonction ou fonction anonyme)
Privilégier les définitions sous forme d’instruction
16
Fonctions
• Renvoi de valeurs
• Fonctions imbriquées
17
Fonctions
• Passage de paramètre
– Tout est passé en référence sauf les types « primitifs » : Boolean, Number, int, uint et String
– Valeurs par défaut
– Paramètre « … » (le reste) :
18
Fonctions
• Méthodes vs fonctions closures
– Méthode : définie comme partie d’une définition de classe ou associée à l’occurrence d’un objet.
– Fonction closure : définie de toute autre façon
• Exemples : fonction globale, fonction dans une méthode…
• Contient un instantané de son environnement lexical.
•
19
Classes
• Définition d’une classe
• Définition d’une classe dans un package
• Attributs de classe : dynamic, final, internal, public
20
Classe
• Attributs de propriété (attributs, méthodes) – internal (par défaut) : Visible pour les références
au sein d’un même package
– private : Visible pour les références au sein d’une même classe
– protected : Visible pour des références au sein d’une même classe et de classes dérivées
– public : Visible pour des références en tous lieux
– static : Spécifie qu’une propriété appartient à la classe et non pas aux occurrences de la classe
21
Classe
• Le constructeur
• Méthodes accesseur get et set
•
22
Classe
• Enumération
23
Interfaces
• Une interface est une collection de déclarations de méthodes
• Définition d’une interface
24
Interfaces
• Implémentation d’une interface
• Contrainte lors de l’implémentation – Utiliser l’identificateur de contrôle public – Utiliser le même nom, le même nombre de
paramètres et type de données et le même type de retour que la méthode de l’interface
25
Héritage
• Les mots clés extends et override
26
Héritage
• Contrainte liées à la redéfinition de méthodes
– Les méthodes statiques ne sont pas héritées et ne peuvent donc pas être redéfinies.
– La méthode redéfinie ne doit pas être déclarée avec le mot-clé final ou private dans la classe mère.
– La méthode de redéfinition doit avoir le même niveau de contrôle d’accès que celle de la classe de base.
– La méthode redéfinie doit utiliser le même nom, le même nombre de paramètres et type de données et le même type de retour que celle de la classe mère.
27
Héritage
• Héritage et interfaces
• Instruction super
28
Gestion des évènements
• Trois éléments importants
– La source : quel objet est concerné par l’évènement ?
– L’évènement : que doit-il se passer, à quel événement doit-on répondre ?
– La réponse : quelles actions doivent être exécutées lorsque l’évènement se produit ?
29
Processus de gestion d’événement
Flash Player
myButton:Button Listeners: • function1() • function2() • eventResponse()
eventObject:MouseEvent target : myButton type : MouseEvent.CLICK …
30