Вы находитесь на странице: 1из 27

Cours Lingo version 8-5

9 sances de 3 heures
Sujet traiter
1. Rappel
a. La fentre de messages
b. Les oprateurs
i. Oprateurs mathmatiques
ii. Oprateurs de comparaisons
iii. Oprateurs logiques
iv. Oprateurs de concatnation ( pas fait manque la notion de variable texte).
c. Les gestionnaires
i. Principes
ii. Paramtres et arguments
iii. Fonctions
d. Les diffrents types de scripts
i. Scripts danimations
ii. Comportements (scripts de scnario)
iii. Scripts dacteurs
iv. Scripts parents
e. Evnements et priorits des scripts
f. Les variables
i. Les diffrents types de variables
1. Entiers
2. flottants
3. chanes
4. symboles
5. listes
6. objets
ii. Ltendue des variables
g. Le debbugage
i. La fentre de messages
ii. La fentre de surveillance
iii. La fentre du dbogueur
h. Gnralit sur les images
i. Gnralit sur le son
2. Les listes

3. La programmation oriente objet (POO)


4. Lingo et les images-objets
5. Lingo et le texte
6. Lingo et les formes vectorielles (vecteur et flash)
7. Lingo et le son
8. Lingo et la vido
9. Animation dans une fentre
10. Les xtras
Bibliographie
Lingo le guide du programmeur
JR NYQUIST R MARTIN
OEM
Collection micro pro
580 pages - 2001
ISBN : 2746401673
DIRECTOR 8.5 (+ CD-ROM)
Andrew ALLENSON
Traduit de l' anglais
DUNOD
880 pages - 2002
ISBN : 2100059238

Lingo 8.5
Rappel

Lingo, le langage de Director


Gnralits
Lingo est le langage de dveloppement de director.
Il permet une programmation vnementielle oriente objet.
Il ne sagit pas dun langage de bas niveau. Il possde une syntaxe facilement comprhensible par le dbutant. A lorigine la syntaxe
dite verbose tait proche du langage naturel. Depuis la version 7 de Director, Macromdia intgr une syntaxe dite pointe plus
proche des langages modernes tel que le C ou la Java.
La syntaxe verbose est toujours utilisable. Toutefois, pour des questions de performance, il semble prfrable dviter de mlanger
les deux types de syntaxes dans une mme instruction.

Les quipes de dveloppement de Macromdia nont cess de faire voluer le langage Lingo. Aujourdhui il comprend plusieurs
centaines dinstructions dans les domaines suivants :
Gestion de linteractivit
Gestion des diffrents mdias supports par Director (textes, images, son, vido, flash)
Gestion du rseau (NetLingo)
Gestion du serveur MultiUtilisateurs
Production ou dition dimages (ImaginLingo)
Gestion de la 3D

Le fentre de Messages (Ctrl + M)


La fentre de messages permet de tester toutes les commandes Lingo.
Pour afficher le rsultat dune commande Lingo dans la fentre messages, utiliser la commande put
Dans la fentre Messages taper : put the environment'
put the environment
-- [#shockMachine: 0, #shockMachineVersion: "", #platform: "Windows,32", #runMode: "Author", #colorDepth: 16, #in
ternetConnected: #offline, #uiLanguage: "French", #osLanguage: "French", #productBuildVersion: "187"]

Figure 1 : La fentre de messages


put "toto"
-- "toto"
put toto
-- <Void>
put 50
-- 50
put 50 + 10
-- 60
La commande put peut galement tre utilise des scripts Lingo. Le rsultat sera galement affich dans la fentre de messages (Voir
le chapitre debugage).

Les commentaires
Il est possible de placer des commentaires dans le code Lingo. Ces commentaires ne seront pas excuts par le moteur de Lingo.
Les commentaires ont deux finalits principales :
Documentation du code.
Documenter votre code permet de le rendre le programme que vous crivez plus comprhensible pour vous-mme mais
aussi pour les dveloppeurs qui prendront le relais de votre travail dans lavenir.
Test et debugage
Il est parfois utile de supprimer quelques lignes de codes lors de la recherche derreurs. Plutt que de supprimer
physiquement des lignes de codes, vous pouvez les mettre en commentaires. Elles seront ignores par Director. Nous
reviendrons sur les techniques de dbugages dans le chapitre debugage.
Pour insrer un commentaire dans du code Lingo, il faut utiliser le signe --.
-- ceci est un commentaire
Il est galement possible de placer un commentaire aprs une instruction Lingo
Put 'toto' -- ce commentaire situe apres l'instruction ne sera pas execute
Si un commentaire tient sur plusieurs ligne, chaque ligne du commentaire devra commencer par .
-- Voici un commentaire sur plusieurs ligne
-- Chaque ligne doit commencer par --

Les variables
Le propre dun langage de programmation est de faire des oprations (affectation, calcul, comparaison) sur des valeurs. Ces
valeurs peuvent tre saisies par lutilisateur, issues de calcul ou de fichiers. Pendant lexcution dun programme, ces valeurs
sont stockes dans la mmoire vive de lordinateur sous forme de variables.
Dans certains langages de programmation, il est obligatoire de dclarer une variable avant de pouvoir linitialiser. Ce nest pas
le cas avec Lingo.
Avec Lingo, le simple faite daffecter une valeur une variable, cre cette variable en mmoire.
Depuis la version 7 de Director, il nest mme plus obligatoire dutiliser la commande set pour dclarer une variable.
Si Lingo rencontre un mot quil ne connat pas, il considre quil sagit dune variable.
put MaVariable
-- <Void>
Dans l'exemple prcdent, on demande Lingo dafficher le contenu de la variable MaVariable.

Cette variable nexistant pas, Lingo la cre. <Void> signifie que la variable ne contient aucune valeur.
Lingo et la porte des variables.
Dans lenvironnement de dveloppement Lingo, les variables peuvent avoir deux portes.

Les variables locales :


Une variable locale nexiste que dans le gestionnaire ou elle est initialise. Ds que le gestionnaire ayant initialis une variable
locale est excut, la variable disparat de la mmoire. Elle nest donc plus accessible.
Deux variables locales peuvent porter le mme nom dans deux gestionnaires diffrents ; cela ne pose pas de problme. Il est
classique dutiliser plusieurs variables nommes x ou y comme compteur de boucles.

Les variables globales :


Une variable globale a une porte globale. Elle peut tre utilise par tous les gestionnaires de lapplication. Si lapplication est
dcoupe en plusieurs animations, les variables globales seront accessibles par toutes les animations.
Pour dfinir une variable globale, il faut utiliser linstruction global suivie du nom des variables globales.
Dans lexemple suivant, trois variables globales sont dfinies dans une mme instruction.
global gJoueur, gTour, gScore
Afin de diffrencier les variables locales des variables globales, il est de coutume dutiliser le g minuscule comme premire
lettre du nom de la variable globale.
Linstruction showGlobals permet dafficher dans la fentre de messages toutes les variables globales initialises ainsi que
leurs contenus. Cette instruction est pratique pour le dbugage.
Linstruction clearGlobals donne toutes les variables globales la valeur Void.

Lingo et les types de variables :


Type de
variable
Chaine
Entier
Flottant

Exemples
Toto , aaa ! , Ceci est une chaine de caractres , 12345
1, -10
1.5, -10.25, 99999.99

Constante
Symbole
Liste
Objet

True, false, return, quote


#ok, #mort
[1,2,3], [toto,1, 2], [[1],[9,9,9]], [#id :121, #lib : toto]
<offspring toto 2 12589ac>

1. Les chanes de caractres


Une variable de type chane contient une suite de caractres alphabtiques ou numriques.
Pour tester si une variable est de type chane, vous utilisez la fonction StringP
MaVariable = "toto"
Put MaVariable.StringP
-- 1
Le contenu de MaVariable est bien une chane.
2. Les entiers
Une variable de type entier contient un nombre entier positif ou ngatif.
Pour tester si une variable est de type entier, vous utilisez la fonction IntegerP
MaVariable = -10
Put MaVariable.IntegerP
-- 1
Le contenu de MaVariable est bien un entier.
3. Les flottants
Une variable de type flottant contient un nombre virgule positif ou ngatif.
Pour tester si une variable est de type entier, vous utilisez la fonction FloatP
MaVariable = 1.5
Put MaVariable.FloatP
-- 1
Le contenu de MaVariable est bien un nombre virgule.
4. Les constantes.
Les constantes sont des lments dont la valeur ne change pas.
Lexemple suivant permet de tester si lutilisateur a appuy sur la touche Entre.
if the key = Return then
alert "Vous avez appuye sur la touche Entree"
end if
5. Les symboles.
Un symbole est une chane de caractres prcde du signe #. Un symbole est une constante dfinie par le programmeur

pour les besoins de son dveloppement.


Voici quelques exemples de symboles
#ok
#marche
#course
#arret
Le symbole est trait par Lingo aussi rapidement quun entier mais il est plus parlant pour le programmeur.
Dans les deux exemples suivants, le rsultat sera identique. Mais le premier exemple sera trait plus rapidement par Lingo
que le second.
if sens = #gauche then
Sprite(1).loch = sprite(1).loch - 5
else
Sprite(1).loch = sprite(1).loch + 5
end if
if sens = "gauche" then
Sprite(1).loch = sprite(1).loch - 5
else
Sprite(1).loch = sprite(1).loch + 5
end if
Une autre solution syntaxe aurait produit le mme rsultat en conservant la rapidit dexcution. Par contre, linterprtation
du code pour le programmeur est moins aise, surtout si ce programmeur soccupe de la maintenance de lapplication sans
avoir particip au dveloppement.
if sens = 1 then
Sprite(1).loch = sprite(1).loch - 5
else
Sprite(1).loch = sprite(1).loch + 5
end if
Pour tester si une variable est de type symbole, vous utilisez la fonction SymboleP
allure = #course
Put allure.SymboleP
-- 1
6. Les listes
Les listes sont des variables qui permettent de stocker plusieurs valeurs. Loprateur permettant de dsigner une liste est le
crochet [].
Voici un exemple de listes
Joueurs= ["toto","titi","tata"]

Pour tester si une variable est de type liste, vous utilisez la fonction ListeP
Joueurs= ["toto","titi","tata"]
Put Joueurs.ListeP
-- 1
Il existe deux types de listes :
Les listes linaires
Les listes de proprits
Nous reviendrons plus en dtail sur les listes dans un chapitre ultrieur.
7. Les objets
Les objets sont la base de la programmation oriente objet (POO).
Un objet permet dassocier des variables appeles proprits et du code.
Nous reviendrons plus en dtail sur le concept dobjet dans les chapitres ultrieurs.

Les oprateurs
Lingo

utilise diffrents oprateurs pour les oprations :


daffectation
de calcul
de comparaison
de concatnation.

Oprations daffectation
Loprateur daffectation est le signe =.
Set MaVariable = 10
Le chiffre 10 est affect la variable MaVariable.
Vous pouvez utilisez dautres syntaxes :
MaVariable = 10
set MaVariable to 10
set 10 into Mavariable
Les deux dernires lignes de code correspondent la syntaxe dite verbose de Lingo.

set MaVariable = MaVariable + 1


Cette ligne de code ajoute 1 au contenu de la ma variable appele MaVariable. Lopration situe droite du signe = est
dabord effectue (MaVariable + 1). Puis le rsultat obtenu est affect MaVariable.

Oprations mathmatiques
a. Addition, soustraction, multiplication et division
Les oprateurs + - * / sont utiliss pour les oprations mathmatiques. Les oprateurs mathmatiques peuvent tre
utiliss avec des nombres (entiers ou virgule) mais aussi avec des chanes.
MaVariable = 5 + 4
put MaVariable
-- 9
Le rsultat de laddition de deux entiers donne un entier.
MaVariable = "5" + 4
put MaVariable
-- 9.0000
Dans cet exemple, on voit que Director value la chane 5 en nombre virgule, puis effectue laddition.
MaVariable = 5.0 + 4
put MaVariable
-- 9.0000
Si lun des oprandes de laddition est un nombre virgule, le rsultat est un nombre virgule.
Avec la division le rsultat est plus visible :
MaVariable = 5 / 2
put MaVariable
-- 2
MaVariable = Mavariable * 2
put mavariable
-- 4
Comme le montre le rsultat de lenchanement dune division et dune multiplication, la division du nombre entier 5 par
le nombre entier 2 donne bien le nombre entier 2.
Pour obtenir un rsultat virgule, lun des deux oprandes doit tre un nombre virgule ou une chane.
MaVariable = 5.0 / 2
put MaVariable

-- 2.5000
MaVariable = Mavariable * 2
put mavariable
-- 5
MaVariable = "5" / 2
put MaVariable
-- 2.5000
b. Le modulo
Le modulo (mod) permet dobtenir le reste dune division.
MaVariable = 7 mod 2
put MaVariable
-- 1
Dans cette opration, 5 est le dividende et 2 le diviseur. Loprateur mod renvoie le reste 1.
Loprateur mod ne fonctionne quavec des entiers. Si lun des oprandes est un nombre virgule, Director larrondira
avant deffectuer le modulo.
MaVariable = 7.4 mod 2
put MaVariable
-- 1
Dans cet exemple, le nombre virgule 5.4 est arrondi 5 avant que Director neffectue le modulo.
MaVariable = 7.5 mod 2
put MaVariable
-- 0
Dans cet exemple, le nombre virgule 5.5 est arrondi 6 avant que Director neffectue le modulo.
c. Priorits et parenthses
Director suit les rgles de priorits de lalgbre.
Vous pouvez utilisez les parenthses deux fins :
faciliter la lecture dun calcul
put 10 + 2 * 5
-- 20
put 10 + (2 * 5)
-- 20

intervenir dans les rgles de priorits de lalgbre.


put (10 + 2) * 5

-- 60
Dans ce cas, lexpression entre parenthse est value en premier. Puis le rsultat est multipli par 5.

Oprateurs de comparaison
Lingo reconnat les mmes oprateurs de comparaison que lalgbre.
Oprateur
Signification
=
Egal
>
Suprieur
<
Infrieur
>=
Suprieur ou gal
<=
Infrieur ou gal
<>
Diffrent de
Lorsquun oprateur de comparaison est utilis, Lingo retourne une valeur boolenne. Une valeur boolenne est gal vrai (1)
ou faux (0).
put 2 = 2
-- 1
Lexemple prcdent signifie que la comparaison 2 = 2 est vrai
Voici quelques exemples dgalits sur des nombres, des expressions et du texte.
put 3 > 2
-- 1
put 3 <> 2
-- 1
put 3 + 2 = 2 + 2 + 1
-- 1
put "Director" = "Director"
-- 1
put 3 = 2
-- 0
Lexemple prcdent signifie que la comparaison 3 = 2 est fausse.
Voici quelques exemples dingalits entre des nombres, des expressions et du texte.
put 5 < 7
-- 1
put 3 + 2 > 1
-- 1
put "Director" = "Lingo"

-- 0
put "aa" > "ab"
-- 0
put "Director" = "DIRECTOR"
-- 1
Lexemple prcdent nous montre que director ne fait pas de distinction entre les majuscules et les minuscules.
Prcdemment nous avons vu que la division de deux entiers donne toujours un entier. Si nous voulons obtenir un rsultat
avec virgule, un des oprandes de lopration doit tre un nombre virgule.
Nous pouvons vrifier ici cette mthode de calcul de Director en testant lgalit suivante :
put 5 / 2 = 5.0 / 2
-- 0
La division de 5 par 2 donne 2. Ce chiffre est bien un entier, il ne sagit pas dun format daffichage sans virgule puisque
lgalit 5 / 2 = 5.0 / 2 donne un rsultat faux.

Les oprateurs logiques


Lingo dispose de trois oprateurs logiques.
Oprateur
And
Or
not

Signification
Et
Ou
Non

Lorsque Lingo rencontre un oprateur de comparaison, il value les deux oprandes en tant que valeur boolenne (vrai ou
faux) et retourne une valeur boolenne.
a. Loprateur And
Loprateur And permet de tester si les deux oprandes sont vrais.
Si les deux oprandes sont vrais, Lingo retourne vrai. Dans tous les autres cas, Lingo retourne faux.
put 1 and 1
-- 1
Lingo considre que tout entier positif ou ngatif est vrai.
put -1 and 3
-- 1
Si lun des oprandes est faux, Lingo retourne faux.
put 1 and 0

-- 0
put 0 and 5
-- 0
put 0 and 0
-- 0
b. Loprateur Or
Loprateur Or permet de tester si au moins un des deux oprandes est vrai. Dans ce cas, Lingo retourne vrai.
Si les deux oprandes sont faux, Lingo retourne faux
put 1 or 0
-- 1
put 1 or 1
-- 1
put 5 or 2
-- 1
put 0 or 0
-- 0
c. Loprateur Not
Loprateur Not permet de retourner le contraire dune valeur boolenne.
put not 1
-- 0
put not 0
-- 1
Les oprateurs logiques peuvent tre combins entre eux. Pour tester des expressions complexes vous pouvez galement
utiliser les parenthses.
put (1 and 1) or (1 and 0)
-- 1

Les diffrents types de scripts


Dans Director, il existe quatre type de scripts :
Les scripts danimations,
les scripts de comportements,
les scripts dacteurs,
les scripts parents.

Les scripts danimations.


Les scripts danimations ont de multiples utilisations :
Ils sont accessibles depuis toute lanimation, cest--dire que vous pouvez les appeler depuis nimporte quels
gestionnaires.
Ils servent stocker les fonctions que vous dvelopperez.
Il permettent de grer des vnements comme le lancement ou larrt de lanimation. Lvnement startMovie est
parfait pour linitialisation des variables globales. Il sexcute automatiquement une fois au lancement de lanimation.

Les comportements.
Un comportement peut tre associ dans le scnario une image-objet ou une image.
Il faut faire des shoot dcrans pour illustrer les diffrentes procdure
a. Les comportements dimage-objet.
Les comportements permettent de grer les actions de lutilisateur en rapport avec les images-objets prsentes sur la scne
comme le survol (roll-over) ou le clic
Pour crer un comportement sans lassocier une image-objet particulire :
ouvrez la fentre de script (CTRL+0),
cliquez sur licne plus pour crer un nouveau script,
dans linspecteur de proprits, vrifier que le script est bien de type comportement.
Pour crer un comportement en lassociant directement une image-objet :
slectionnez une image-objet dans le scnario,
ouvrez linspecteur de proprit,
cliquez sur longlet comportement,

cliquez sur licne plus,


slectionnez nouveau comportement,
donnez un nom au nouveau comportement et validez,
le nouveau comportement doit apparatre en sur brillance dans la liste des comportements associs limageobjet,
cliquez sur licne fentre de script (CTRL+0),
dans la fentre de script saisissez le nouveau comportement.

Un mme comportement peut tre associ plusieurs image-objets. Par exemple, vous pouvez crer un comportement
unique pour la gestion de tout les rollover de votre application. Il vous suffira ensuite de le placer sur toutes les imagesobjets ncessitant ce type de comportement. Nous verrons plus tard comment crire ce type de comportement.

Les comportements dimage ou scripts dimage.


Les scripts dimage sont placs au niveau des images sur la piste spcialise rserve aux scripts.
Il permettent dintercepter au niveau dune image des messages tel que enterFrame ou exitFrame.
Le script dimage le plus utilis est le suivant :
On exitframe
Go to the frame
end
Il permet la tte de lecture de boucler sur une image. Lutilisateur prendre le temps de dcouvrir un cran de lanimation
et choisir la suite de ses prgrinations en fonction de linteractivit mise en place. Ce type de script doit tre utilis chaque
fois que lutilisateur doit indiquer un choix.
Pour crer un script dimage :
Double cliquez sur la piste spcialise des scripts
la fentre de script souvre
Saisissez le script voulu.

Les scripts dacteur.


Un script dacteur est un script attach directement un acteur. Chaque image-objet cre partir de cette acteur possdera
donc une occurrence du script dacteur.
Le scripts dacteurs sont de moins en moins utiliss au profit des comportements dimages-objets.
Pour crer un script dacteur :

Ouvrez la fentre ddition de lacteur sur lequel vous voulez crer un script dacteur,
Cliquez sur licne script dacteur (CTRL+)
la fentre de script souvre
Saisissez le script voulu.

Les scripts parents.


Ils permettent de gnrer des objets enfants.
Un script parents comprend toutes les proprits et les gestionnaires ncessaires la gestion des objets enfants (Voir chapitre
sur la programmation oriente objet).

Programmation vnementielle et hirarchie des messages.


Lingo est un langage de programmation vnementielle. Cela veut dire que la programmation se fait en fonction dvnements
prdfinis. Fini le temps ou le dveloppeur crivait des programmes de plusieurs centaines de lignes daffile dans lesquelles il
devait prvoir tous les cas de figure.
Dans un outil de programmation vnementielle, les concepteurs de lenvironnement de dveloppement ont labor un cycle
dvnements rcurrents. Pour coder son programme, le dveloppeur dapplication utilise ce cycle pour positionner son code
organis sous forme de petits gestionnaires. Lors de lexcution du programme, ces gestionnaires seront appels en fonction de
leur positionnement dans le cycle des vnements.
Voici une liste dvnements non exhaustive classs par type de script.
Evnements grables au niveau des comportements dimage-objet
On beginSprite
Cet vnement est appel chaque fois que la tte de lecture rencontre une nouvelle image-objet.
Il permet de crer les instances de tous les comportements attachs limage-objet.
La rfrence de lobjet est transmise dans le paramtre me.
Cet vnement est gnr avant lvnement PrepareFrame.
Si la tte de lecture quitte une image-objet pour y revenir plus tard, lvnement BeginSprite sera
nouveau appel.
On EndSprite
Cet vnement est appel chaque fois que la tte de lecture quitte une image-objet.
EndSprite est appel aprs lvnement ExitFrame.
On MouseEnter
Cet vnement est appel lorsque la souris entre dans la zone de rfrence dune image-objet.
Lvnement MouseEnter est gnralement utilis pour permuter deux acteurs pour donner un effet de
rollover.
Si cet vnement est utilis dans un comportement, la rfrence de lobjet est transmise dans le

On MouseLeave

On MouseWithin

On MouseDown

On MouseUp

On MouseUpOutside

On RightMouseDown

On RightMouseUp

On PrepareFrame

On EnterFrame

On ExitFrame

paramtre me.
Cet vnement est appel lorsque la souris quitte la zone de rfrence dune image-objet.
Lvnement MouseEnter est gnralement utilis pour permuter deux acteurs pour donner un effet de
rollover.
Si cet vnement est utilis dans un comportement, la rfrence de lobjet est transmise dans le
paramtre me.
Cet vnement est appel lorsque la souris est sur la zone de rfrence dune image-objet.
Si cet vnement est utilis dans un comportement, la rfrence de lobjet est transmise dans le
paramtre me.
Cet vnement est appel lorsque le bouton gauche de la souris est appuy.
Si cet vnement est utilis dans un comportement, la rfrence de lobjet est transmise dans le
paramtre me.
Cet vnement est appel lorsque le bouton gauche de la souris est relch.
Si cet vnement est utilis dans un comportement, la rfrence de lobjet est transmise dans le
paramtre me.
Cet vnement est appel lorsque le bouton gauche de la souris est relch en dehors du rectangle de
limage-objet.
Si cet vnement est utilis dans un comportement, la rfrence de lobjet est transmise dans le
paramtre me.
Cet vnement est appel lorsque le bouton droit de la souris est appuy.
Si cet vnement est utilis dans un comportement, la rfrence de lobjet est transmise dans le
paramtre me.
Cet vnement est appel lorsque le bouton droit de la souris est relch.
Si cet vnement est utilis dans un comportement, la rfrence de lobjet est transmise dans le
paramtre me.
Cet vnement est appel avant que limage ne soit dessine lcran.
Si cet vnement est utilis dans un comportement, la rfrence de lobjet est transmise dans le
paramtre me.
Cet vnement est appel lorsque le tte de lecture entre dans une image.
Si cet vnement est utilis dans un comportement, la rfrence de lobjet est transmise dans le
paramtre me.
Cet vnement est appel lorsque le tte de lecture quitte une image.
Si cet vnement est utilis dans un comportement, la rfrence de lobjet est transmise dans le
paramtre me.

Evnements grables au niveau dun script dacteur


On MouseEnter
Cet vnement est appel lorsque la souris entre dans la zone de rfrence dune image-objet.
Lvnement MouseEnter est gnralement utilis pour permuter deux acteurs pour donner un effet de
rollover.
On MouseLeave
Cet vnement est appel lorsque la souris quitte la zone de rfrence dune image-objet.
Lvnement MouseEnter est gnralement utilis pour permuter deux acteurs pour donner un effet de
rollover.
On MouseWithin
Cet vnement est appel lorsque la souris est sur la zone de rfrence dune image-objet.
On MouseDown
Cet vnement est appel lorsque le bouton gauche de la souris est appuy.
On MouseUp
Cet vnement est appel lorsque le bouton gauche de la souris est relch.
On MouseUpOutside
Cet vnement est appel lorsque le bouton gauche de la souris est relch en dehors du rectangle de
limage-objet.
On RightMouseDown
Cet vnement est appel lorsque le bouton droit de la souris est appuy.
On RightMouseUp
Cet vnement est appel lorsque le bouton droit de la souris est relch.
Evnements grables au niveau dun script dimage
On PrepareFrame
Cet vnement est appel avant que limage ne soit dessine lcran.
On EnterFrame
Cet vnement est appel lorsque le tte de lecture entre dans une image.
On ExitFrame
Cet vnement est appel lorsque le tte de lecture quitte une image.
Evnements grables au niveau des scripts danimation
On PrepareMovie
Cet vnement est appel une fois dans le cycle de lapplication.
Il est appel en dbut de programme, juste aprs le chargement des acteurs, mais avant que la premire
image de lapplication ne soit affiche.
Cest donc un bon emplacement pour initialiser les variables globales et procder des rglages comme la
taille de lcran ou le nombre de couleurs affiches.
On StartMovie
Cet vnement est appel une fois dans le cycle de lapplication.
Il est appel en dbut de programme, il intervient aprs PrepareMovie.
On StopMovie
Cet vnement est appel une fois dans le cycle de lapplication.
Il est appel en fin de programme. Cest lvnement idal pour librer les ressources utilises par
lapplication, fermer les fichiers, reconfigurer lcran correctement
On idle
Cet vnement se produit chaque fois que director na plus dinstruction traiter.
On KeyDown
Cet vnement se produit chaque fois quune touche du clavier est appuye.
On KeyUp
Cet vnement de produit chaque fois quune touche du clavier est relche.

Comme vous pouvez le constater, certains vnements peuvent tre appels depuis plusieurs types de scripts.
Que se passe-t-il si une image-objet possde un comportement grant lvnement MouseDown et que lacteur servant
limage-objet a lui aussi un script dacteur grant lvnement MouseDown ?
Lequel des deux scripts sera excut en premier ?
Pour rsoudre ce type de problme, les concepteurs de Director ont dfini une hirarchie dans lexcution des scripts.
Les messages sont envoys :
1- Aux comportements associs aux images-objets
2- Au script dacteur des images-objets
3- Au comportement associ limage courante
4- Aux scripts danimation
Lorsquun message est intercept par un script, director excute le script. Le message nest pas transmis aux scripts situs plus
loin dans la hirarchie.
Si lon veut forcer director poursuivre dans la hirarchie, il faut utiliser la commande pass.

Les comportements et la gestion des images objets.


Introduction la programmation oriente objet.

La programmation orient objet (POO) permet de dfinir des variables spciale appeles proprits (property) et des
gestionnaires. Quand vous associez un comportement une image-objet, une instance (copie) de toutes les proprits du
comportement est cre pour cette image-objet.
Nous allons crer notre premier comportement.
Ouvrez la fentre de script.
Nommez votre nouveau script bt' (1)
Cliquez sur licne I. Dans la fentre de proprit, vrifiez que le script est bien un comportement (2).
Dans la fentre de script tapez le code suivant :
Property pSprite
On beginSprite me
pSprite = sprite(me.spritenum)
End

On mouseEnter me
Put pSprite
end
Dans le fentre de dessin vectoriel, crer un bouton et nommez le bouton off (3).

Crer trois instance de cet acteur bouton sur la scne et associez leur le comportement bt
Ouvrez la fentre de message
Testez votre application
A chaque fois que la souris survol un bouton, un message, prcisant le numro de la piste de limage-objet survole,
apparat dans la fentre de message.
-- (sprite 1)
-- (sprite 3)
-- (sprite 2)
-- (sprite 1)
-- (sprite 1)
-- (sprite 1)
Explication du code

Property pSprite
La commande property permet de dfinir les proprits du comportement.
Pour faciliter la lecture du code, prenez lhabitude de nommer les proprits en commenant par un p minuscule. Ce nest pas
une rgle obligatoire vis vis de Lingo mais cette convention est utilise par beaucoup de dveloppeur.
Si plusieurs proprits doivent tre dfinies, vous pouvez le faire sur la mme ligne :
Property pSprite, pSens
On beginSprite me
pSprite = sprite(me.spritenum)
End
Le gestionnaire beginSprite est excut, une seule fois, lorsque la tte de lecture rentre sur limage-objet. Pour le vrifier,
ajoutez la ligne suivante au gestionnaire beginSprite :
put "initialisation" && pSprite
Arrtez lanimation et relancez la pour tester.
Ce gestionnaire sert initialiser les proprits du comportement pour limage-objet.
Paramtre me
Il sert passer la rfrence de lobjet (adresse mmoire) au comportement.
Rappelez vous, quand vous associez un comportement une image-objet, une instance des proprits est cr. Le paramtre
me permet Lingo de faire pointer le comportement vers linstance des proprits de limage-objet.
La proprit spritenum
spritenum est une proprit dimage-objet. Elle contient par dfaut le numro de la piste de limage-objet.

Linstruction pSprite = sprite(me.spritenum) initialise la proprit pSprite avec la valeur du numro de la piste de limageobjet.
On mouseEnter me
Put pSprite
end
Le gestionnaire mouseEnter nest appel que lorsque la souris entre sur limage-objet associ. Comme vous lavez vu plus
haut, le paramtre me permet de passer la rfrence de limage-objet pour que Lingo puisse
Application : Cration dun comportement pour grer le rollover sur tous les boutons dune application.
Objectif : Lorsque la souris survol un bouton, le comportement doit afficher lacteur correspondant ltat survoler du bouton.
Lorsque lutilisateur clic sur le bouton gauche de la souris, le comportement doit afficher ltat cliqu du bouton. Le
comportement doit galement grer ltat normal du bouton.
Les vnements.
BeginSprite va nous permettre dinitialiser les diffrentes proprits du comportement.
MouseEnter va nous permettre dafficher ltat survol.
MouseDown va nous permettre dafficher ltat cliqu.
MouseUp va nous permettre de grer le retour a ltat survol lorsque lutilisateur relche le bouton de la souris.
MouseLeave va nous permettre de grer le retour ltat normal du bouton lorsque la souris sort de la zone de rfrence.
Les proprits
Pour grer le rollover sur les boutons, plusieurs technique peuvent tre envisages.
Pour commencer, nous utiliseront le nom des acteurs pour dterminer les acteurs de remplacement. Chaque bouton existe
dans les 3 tats (off, survol, on).
La proprit pName permet de stocker le nom gnrique du bouton (bt1, bt2).
Les acteurs
Crez deux sries de trois boutons. Chaque srie de bouton devra possdez :
Une version off bt1 off
Une version survol bt1 survol
Une version on bt1 on
Le code du comportement rollover
Commencez par crer une distribution spcifique pour stocker les scripts. Nommer la scripts
Ouvrez la fentre de script
Nommez le nouveau script rollover et tapez le code qui suit :

property pName
on BeginSprite me
pName = sprite(me.spritenum).member.name.word[1]
end
on mouseEnter me
sprite(me.spritenum).Member = member(pName && "survol")
end
on mouseDown me
sprite(me.spritenum).member = member(pName && "on")
end
on mouseUp me
sprite(me.spriteNum).member = member(pName && "survol")
on mouseleave me
sprite(me.spritenum).member = member(pName && "off")
end
Explication du code

on BeginSprite me
pName = sprite(me.spritenum).member.name.word[1]
end
pName sert stocker le premier mot du nom de lacteur.
Lexpression suivante sprite(me.spritenum).member.name.word[1], se lit de la droite vers la gauche.
La proprit name retour le nom de lacteur utilis.
La expression word extrait un mot ou un groupe de mot dune chane de caractres. Dans cette exemple, le premier mot du
nom de lacteur est retourn.

on mouseEnter me
sprite(me.spritenum).Member = member(pName && "survol")
end

Les 4 gestionnaires suivants servent intervertir lacteur utilis par limage-objet en fonction de lvnement.
La proprit dimage-objet member sert spcifier lacteur affich par une image-objet spcifie.
Le nom de lacteur utiliser est retrouv en concatnant le contenu de la proprit pName et la terminaison voulue en fonction
de lvnement (off, survol ou on).
Ce comportement unique est utilisable pour la gestion de tous les boutons dune application, si la norme de nomage des
boutons est respecte. Si le comportement un utilise sur un bouton ne possdant pas les trois acteurs correctement nomms,
une erreur de script est gnre.
Des comportements pour modifier les proprits des images objets.
Dans lexercice qui suit noue allons crer une tlcommande permettant de dplacer une image sur la scne.
Ouvrez une nouvelle animation director.
Importer une image dans la distribution (Fichier importer ou Ctrl+r).
Poser limage sur la scne.
Crer un acteur flche. Nommez le flche off.
Crez ltat de la flche pour le rollover.
Crer quatre image-objets partir de lacteur flche. Orientez les flches dans les quatre direction en utilisant loutils de
rotation.
Crez un comportement de rollover pour les image-objets flches.
Testez votre application.
Pour grer le dplacement de limage-objet 1 en fonction des clics de lutilisateur sur les flches il existe plusieurs solutions :
Crer 4 gestionnaires diffrents, un par flche. Cette solution nest pas trs
Crer un gestionnaire unique affect aux quatre image-objets. Dans ce cas, le gestionnaire doit pourvoir identifier
limage-objet sur laquelle lutilisateur clic pour dterminer le sens du dplacement.
Une solution simple consiste reprer limage-objet et faire un test.
On mousedown me
Case sprite(me.spritenum) of
2: -- gauche
3: -- droite
4: -- haut
5: -- bas
end case
end

Les curseurs

Bibliothque de curseur de director


Director possde sa propre bibliothque de curseurs. Ces curseurs sont utilisables laide de linspecteur de comportement.
Voici le code Lingo gnrer :

on MouseEnter
Cursor 280
End

Curseur personnaliss
Il est possible de dfinir ces propres curseurs.
Un curseur personnalis est un acteur bitmap rpondant certains impratifs :
Il doit faire 16*16 pixels au maximum
Il doit sagir dun acteur 1 bit
Linspecteur de comportement ne permet pas de slectionner un curseur personnalis. Il faut modifier le code Lingo
directement dans la fentre de script.

on MouseEnter
Cursor (member Nom de lacteur 1 bit)
End
Le point chaud du curseur correspond au point dalignement de lacteur utilis.
Curseur anims
Un curseur anim utilise un ou plusieurs bitmaps rpondant certain impratif :
Ils doivent faire 32*32 pixels au maximum (16*16 sur mac)
Il doit sagir dacteur 8 bits.
Pour crer un curseur en couleur ou anim, il faut utiliser lxtra curseur.
Insertion/Elment de mdia/Curseur

1.
2.
3.
4.

Choix du bitmap utiliser


Ajouter le bitmap au curseur
La position du point chaud du curseur doit prciser en pixel partir du coin suprieur gauche
Visualisation du rsultat. Le bouton aperu permet de tester le curseur.

Exercice : Crer une nouvelle animation comportant trois bouton diffrents.


Utiliser un script de boucle pour attendre le choix de lutilisateur.
Crer un changement de curseur en utilisant un curseur de la bibliothque, un curseur personnalis et un curseur anim.

Rollover
Un rollover consiste permuter lacteur dune zone sensible (bouton par exemple) avec un autre acteur pour signaler la zone
lutilisateur.
Pour crer un rollover utiliser linspecteur de comportement en slectionnant laction associe aux images objets : Changer
dacteur.
Un acteur boucle ou un gif anim peuvent tre utiliser sur un rollover. Lanimation cre alors un effet encore plus saisissant.
Exercice : Crer une nouvelle animation comportant trois bouton diffrents (Rouge, vert, bleu) et les comportements associs.
Utiliser un script de boucle pour attendre le choix de lutilisateur.
Crer trois comportements pour grer le changement de curseur et le rollover.
Crer un comportement pour le retour au menu.
Exercice : Modifier les acteurs de remplacement en utilisant des gif anims.

Exercice : Modifier les acteurs de remplacement en utilisant des acteurs boucles.

Вам также может понравиться