introdution à l’ actionscript 3seriousgames.lip6.fr/site/img/pdf/introductionas3.pdf ·...

30
Introduction à l’ActionScript 3 Mathieu Muratet [email protected] 1

Upload: others

Post on 22-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdution à l’ ActionScript 3seriousgames.lip6.fr/site/IMG/pdf/introductionas3.pdf · •2003-2006 : ActionScript 2.0 –Types (ompilation), pseudo lasses (prototype)… •2006-2013

Introduction à l’ActionScript 3

Mathieu Muratet

[email protected]

1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Processus de gestion d’événement

Flash Player

myButton:Button Listeners: • function1() • function2() • eventResponse()

eventObject:MouseEvent target : myButton type : MouseEvent.CLICK …

30