Академический Документы
Профессиональный Документы
Культура Документы
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
Lingo 8.5
Rappel
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
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.
Exemples
Toto , aaa ! , Ceci est une chaine de caractres , 12345
1, -10
1.5, -10.25, 99999.99
Constante
Symbole
Liste
Objet
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
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.
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
-- 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.
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 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,
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.
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.
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.
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.
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
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.
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.