Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf ·...
Transcript of Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf ·...
![Page 2: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/2.jpg)
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
![Page 3: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/3.jpg)
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
![Page 4: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/4.jpg)
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
![Page 5: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/5.jpg)
Environnement de développement minimum
• FlashDevelop 5.0.1
– Windows
– Les API standard
– Un compilateur, débogueur, frameworks (Flex)…
• Java
5
![Page 6: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/6.jpg)
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
![Page 7: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/7.jpg)
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
![Page 8: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/8.jpg)
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
![Page 9: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/9.jpg)
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
![Page 10: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/10.jpg)
Fonction trace
• Pour afficher des données sur la sortie standard : trace(..);
• Résultat de l’affichage :
10
![Page 11: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/11.jpg)
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
![Page 12: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/12.jpg)
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
![Page 13: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/13.jpg)
Opérateurs (précisions)
• is
• instanceof
• as
13
![Page 14: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/14.jpg)
Instructions conditionnelles
• if .. else .. • swicth
14
![Page 15: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/15.jpg)
Boucles
• for
• while
• do..while
• for..in
• for..each..in
15
![Page 16: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/16.jpg)
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
![Page 17: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/17.jpg)
Fonctions
• Renvoi de valeurs
• Fonctions imbriquées
17
![Page 18: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/18.jpg)
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
![Page 19: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/19.jpg)
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
![Page 20: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/20.jpg)
Classes
• Définition d’une classe
• Définition d’une classe dans un package
• Attributs de classe : dynamic, final, internal, public
20
![Page 21: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/21.jpg)
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
![Page 22: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/22.jpg)
Classe
• Le constructeur
• Méthodes accesseur get et set
•
22
![Page 23: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/23.jpg)
Classe
• Enumération
23
![Page 24: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/24.jpg)
Interfaces
• Une interface est une collection de déclarations de méthodes
• Définition d’une interface
24
![Page 25: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/25.jpg)
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
![Page 26: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/26.jpg)
Héritage
• Les mots clés extends et override
26
![Page 27: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/27.jpg)
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
![Page 28: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/28.jpg)
Héritage
• Héritage et interfaces
• Instruction super
28
![Page 29: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/29.jpg)
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
![Page 30: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013](https://reader035.fdocuments.us/reader035/viewer/2022062605/5fcf5fc997077b63f41043cf/html5/thumbnails/30.jpg)
Processus de gestion d’événement
Flash Player
myButton:Button Listeners: • function1() • function2() • eventResponse()
eventObject:MouseEvent target : myButton type : MouseEvent.CLICK …
30