LA PROGRAMMATION SOUS DIRECTOR AVEC - esad

Transcription

LA PROGRAMMATION SOUS DIRECTOR AVEC - esad
lingo
LA PROGRAMMATION SOUS DIRECTOR AVEC
mac os
windows 95-98
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
1
SOMMAIRE
VOIR
LEXIQUE
RÉALISATION MULTIMÉDIA SOUS DIRECTOR
SOMMAIRE LINGO
1. Introduction
1.1
1.2
GÉNÉRALITÉS
LES ALGORITHMES
1.2.1 Les algorithmes (suite)
9. Glossaire Lingo
9.1
9.2
9.3
9.4
9.5
A-G
H-M
N-R
S -V
SYMBOLES
2. Structure Lingo
2.1
2.2
2.3
LE LANGAGE LINGO
HIÉRARCHIE DES SCRIPTS
2.2.1 Hiérarchie… (suite)
GESTIONNAIRES (HANDLERS)
2.3.1 Handlers personnali-
10. Bibliographie
10.1
BIBLIOGRAPHIE PAR MÉDIA
sés
2.4
ELÉMENTS DE STRUCTURE
3. Conditions
3.1
LES CONDITIONS IF, THEN, ELSE
3.1.1 Les conditions (suite)
4. Boucles
4.1
LES BOUCLES DE TÂCHES
5. Affectations
5.1
AFFECTATIONS
6. Variables
6.1
MANIPULATION DES DONNÉES
6.1.1 Manipulation …
(suite)
6.1.2 Manipulation …
(suite)
7. Comportements
7.1
COMPORTEMENTS (BEHAVIORS)
8. Exercices
8.1
8.2
8.3
8.4
MESSAGE PERSONNALISÉ
UNE TABLE DE MIXAGE
UNE PLATINE COMMANDE SON
FONDU SONORE DE PROXIMITÉ
➤ adobe première [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
2
CHAPITRE 1 LINGO
VOIR
LEXIQUE
1.1 INTRODUCTION
GÉNÉRALITÉS
Objectifs
Ce module fait suite à l’initiation Director qui était consacrée à l’environnement auteur, aux outils d’édition et d’intégration des médias dans ce logiciel. Il s’agit ici de parvenir à se familiariser avec un vocabulaire de programmation événementielle, de développer des attitudes adaptées, de s’initier à une méthode
dans le but de développer des animations interactives en ayant recours aux ressources du Langage Lingo
et aux facilités introduites par les comportements.
Présentation
Lingo, comme Hypertalk, Applescript ou JavaScript, est dit un langage "script", c'est-à-dire que l'on écrit
de courts programmes nommés "scripts" qui exécutent une tâche. Ces langages sont interprétés à la différence des langages C ou C++ ou Java qui eux sont compilés.
Un langage compilé signifie que le code source du programme doive passer par une moulinette ou compilateur qui génère un exécutable (.exe) : le programme.
Un langage interprété signifie que pour être compris (exécuté), il doive faire appel à un moteur ou
" runtime ". Director inclut un moteur lorsqu’on est en mode auteur, il l’inclut également lorsqu’on génère
un " projecteur " à la fin de notre projet multimédia.
Note : De la même manière, l’éxécution de scripts JavaScript font eux aussi appel au moteur
d’interprétation intégré dans les navigateurs web tels Netscape ou Explorer.
re m a rq u e
Méthode et rigueur
La rédaction de scripts sous Lingo sous Director peut se faire, que l’on soit débutant, confirmé ou professionnel de la programmation. C’est là toute la force de Lingo mais cet avantage ne doit pas masquer le fait
qu’un programme réussi est un programme court, fluide, logique et bien pensé.
• Avant même d’écrire du code, l’auteur aura donc tout intérêt à avoir écrit ou consulté de très près le
scénario de l’application.
•
Il lui faut avoir bien en mémoire la structure de son animation pour en bien mesurer l’architecture, la
navigation possible, le mode de consultation et le niveau d’interactivité voulu.
•
Il posera ensuite sa problématique, action par action pour tenter de repérer les fonctions qui pourraient être communes et donc faire l’objet de variables pour éviter les redondances de code.
•
Il écrira enfin son pseudo code, c’est à dire qu’il écrira en langage naturel les actions que le programme
doit pouvoir effectuer.
•
Ensuite seulement, il traduira ce pseudo code en langage Lingo à travers des scripts de nature différentes selon les cas.
•
Il saura enfin évaluer si le recours à des Xtras ou même à des séquences de codes dans d’autres langages (C, C++) sont nécessaires pour réaliser facilement ce qui serait lourd en Lingo.
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
3
CHAPITRE 5 LINGO
VOIR
LEXIQUE
1.2 INTRODUCTION
LES ALGORITHMES
La construction d'algorithmes
La codification dans un langage représente l’étape ultime de la modélisation d’opérations logiques que
l’on appelle programmation. L’algorithmie, en mathématiques, est une méthode de résolution d'un problème suivant un enchaînement déterminé de règles opératoires.
Le mot "algorithme" est dérivé du nom du mathématicien persan al-Khuwarizmi (v. 780-v. 850), dont les
travaux sur l'algèbre, l'arithmétique et les tables d'astronomie ont largement fait progresser la pensée
mathématique.
Dans le domaine des mathématiques, les algorithmes furent utilisés dès l'Antiquité pour traiter des problèmes d'arithmétique ou de géométrie. Le calcul du plus grand commun diviseur de deux nombres par la
méthode d'Euclide (300 av. J.-C.) en constitue un exemple célèbre. Plus tard, les algorithmes intervinrent
dans les méthodes de résolution d'équations algébriques (algorithme de Newton, méthode d'élimination
de Gauss) et d'équations différentielles.
En informatique, un algorithme désigne un procédé de calcul que l'on peut confier à un ordinateur, et qui est répété
autant de fois qu'il est nécessaire pour parvenir au résultat. Il
se présente alors comme une liste d'instructions de nature
mathématique ou logique pouvant être programmées, et
peut se traduire schématiquement par un organigramme.
Convenablement utilisés, les algorithmes informatiques
offrent des performances bien supérieures aux méthodes de
résolution manuelles et peuvent être appliqués à des problèmes de taille importante.
Ils sont également à la base de méthodes de traitement de
l'information : tri en mémoire centrale d'ordinateur,
recherche rapide d'informations. Le traitement de données
textuelles, la traduction des langages de programmation, le
calcul formel représentent d'autres domaines pour lesquels
l'utilisation d'algorithmes adaptés est efficace.
L'algorithmie permet l'élaboration de stratégies qui résolvent les problèmes posés, elle est donc une
méthode de résolution de problèmes logiques, la façon de faire les choses, c’est le " comment faire ".
Pour développer un algorithme, il convient de débuter par le coeur du problème soit : Quel est le problème à résoudre ? On segmentera le problème en petites tâches et l’on rassemblera chacune des parties pour
construire l'ensemble du programme. L’écriture d’algorithmes demandent du temps et de l'expérience, ici,
rien ne remplacera l’expérience d’un programmeur rompu à cette gymnastique mentale.
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
4
CHAPITRE 5 LINGO
1.2.1 INTRODUCTION
VOIR
LEXIQUE
LES ALGORITHMES (SUITE)
Pour élaborer les algorithmes, on utilise du pseudocode qui nous évite les problèmes de syntaxe liée à tel
ou tel langage et permet ainsi de nous concentrer sur l'algorithme. Une connaissance de base du langage
et de ses fonctions autorisées, c'est-à-dire des principaux mots du dictionnaire Lingo est utile pour définir
le comment.
Il faudra donc scinder les étapes de la programmation, définir les instructions à donner à l'ordinateur
avant d'écrire le code en langage Lingo final.
▼ Exemple d’algorithme codé ici en “pseudo code” :
1. DŽbut dÕinstruction
2. Afficher le nom de l'usager
3. DŽfinir un champ texte
4. DŽfinir une variable globale
5. Faire une boucle pour capter le nom de l'usager dans le champ texte
6. Placer le contenu du champ texte dans la variable globale
7. Naviguer ˆ la page d'affichage
8. Placer le contenu de la variable dans lÕacteur
9. Mettre ˆ jour la page
10. Fin dÕinstruction
NOTES
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
5
CHAPITRE 5 LINGO
2.1 STRUCTURE LINGO
VOIR
LEXIQUE
LE LANGAGE LINGO
Les "scripts"
Le script est donc une série d’instructions, plus ou moins complexe possédant une hiérarchie, une syntaxe
et une logique propre à chaque environnement ou langage. L'ensemble des "scripts" forment le programme.
▼ Exemple de "script" Lingo attaché à un acteur bouton :
on mouseUp
alert "Bienvenue !"
end
Ce "script" attaché à un acteur bouton est exécuté sur le relâché de souris (programmation événementielle). Il envoie le message "Bienvenue" dans une fenêtre de type message système.
Lignes de commentaires
Les lignes de commentaires permettent à l’auteur des scripts de laisser des consignes, informations ou
pense-bêtes à l’intérieur de son code. Cette possibilité est très précieuse et il est conseillé d’en avoir un
usage fréquent. La logique d’un script qui nous paraît évidente parce qu’on travaille sur le sujet depuis
trois semaines nous paraîtra sans doute impénétrable lorsqu’on reprendra le même travail deux mois plus
tard pour effectuer une mise à jour.
Concrètement, la saisie de deux tirets courts (- -) espacés d’un espace pour la lisibilité signifient à Lingo
que la ligne qui suit n’est pas du code qui lui est adressé mais un commentaire à l’usage de l’auteur.
▼ Exemple :
on startMovie
alert " Bonjour "
- - affiche un message dÕalerte de type message syst•me
end startMovie
Hiérarchie des scripts
Les "scripts" doivent être organisés en respectant une hiérarchie d'utilisation. Ainsi le code sera placé dans
son contenant ("movie script", "score script" dans un "frame", "score script" dans un "sprite" ou "cast
script") selon une dynamique de cascade.
Il existe actuellement 5 sortes de scripts bien distincts :
- le "movie script" (script d’animation) ;
- le "score script" (script d’image de scénario) ;
- le "behavior script" (script d’image objet ou de script de comportement) ;
- le "cast script" du "member" (script d’acteur) ;
- le " parent script " (script parent).
attention
Il est important de respecter cette hiérarchie, elle garanti la cohérence et le bon fonctionnement d’un programme. Ces "script" sont soit résidants dans distribution "cast" (interne ou
externe) en tant qu’acteurs (scripts d’animation, de scénario et de comportement), soit associés à un acteur (scripts d’acteurs et parents).
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
6
CHAPITRE 5 LINGO
2.2 STRUCTURE LINGO
VOIR
LEXIQUE
HIÉRARCHIE DES SCRIPTS
1) Script d’animation ou " movie scrip "
C’est le niveau le plus élevé de la hiérarchie des scripts.
Un script placé dans le "movie script" d'une animation Director sera disponible dans toute l'animation
Director. Il peut être appelé par les événements initiateurs les plus courants tels startMovie, stopMovie,
prepareMovie ou par un nom de gestionnaire personnalisé ou " handler " de celui-ci. C’est le lieu idéal
pour y définir et initialiser les variables globales.
▼ Exemple 1 :
on startMovie
- - au lancement de lÕanimation
Set the volume of sound of sprite 1 to 128
- - rŽgler le volume sonore de la piste 1 ˆ la valeur moyenne
end startMovie
- - fin dÕinstruction
▼ Exemple 2 :
on prepareMovie
global gPrenom
- - dŽclare la variable globale " gPrenom "
put empty into gPrenom
- - initialise la variable globale avec la valeur vide
end
2) Script d’image ou " score script "
Un script d’image placé dans un "score script" sera disponible pour les "frames" où il est utilisé. Il peut
être placé sur un ou plusieurs "frame" en étirant sa représentation sur l’échelle temporelle du scénario. Sa
compétence s’arrête aux endroits visités par la tête de lecture.
▼ Exemple :
on exitFrame
- - en sortant de cette frame
go to the frame
- - rester sur cette frame
keskispasse
- - appelle et joue le handler (gestionnaire) nommŽ keskispasse
end
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
7
CHAPITRE 5 LINGO
2.2.1 STRUCTURE LINGO
VOIR
LEXIQUE
HIÉRARCHIE DES SCRIPTS (SUITE)
3) Script d’image objet ou " behavior script "
Un script d’image objet est lu lorsque cette image objet est activée par un des événements initiateurs (ex.
mouseUp) . Le script est associé à l’image objet et non pas à l’acteur, ce qui signifie une indépendance de
l’acteur et de sa représentation (image objet) sur la scène. C’est sur ce mode que fonctionne le glisser
déposer de comportements pour donner un comportement spécifique à une image objet à un certain
moment d’une animation.
▼ Exemple :
on mouseUp
- - lorsque lÕutilisateur rel‰che la souris apr•s lÕavoir cliquŽe
go to next
- - envoie la t•te de lecture au prochain label (marqueur) de scŽnario
- - la commande inverse serait " go to previous "
end
4) Script d’acteur ou " cast script "
Un "script" placé dans un "cast" (acteur), sera lu lorsque l’acteur est employé sur la scène. Le script est
associé à l’acteur quelque soit l’endroit où son occurrence sera placée dans l’animation.
▼ Exemple :
on mouseDown
- - lorsque lÕutilisateur appuye sur la souris
puppetSound 1, " titus "
- - contraint Lingo ˆ jouer lÕacteur son nommŽ " titus " sur la piste
son n¡ 1
end
5) Script parent ou " parent script "
C’est un script d’un genre particulier, il se place comme un script d’acteur et lui est attaché. L’événement
initiateur est la commande new qui déclenche la création d’un nouveau script à partir de lui. Ce niveau de
programmation ne sera pas abordé ici. Pour plus d’informations, voir la bibliographie en fin de section ou
le manuel Lingo de Macromedia.
NOTES
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
8
CHAPITRE 5 LINGO
2.3 STRUCTURE LINGO
VOIR
LEXIQUE
GESTIONNAIRES (HANDLERS)
Les gestionnaires ou "handlers"
Un gestionnaire ou "handler" est le nom donné à un "script" fait d’une (ou série) d’instruction(s) et commençant toujours par on. Le code Lingo est exécuté lorsque le gestionnaire est appelé par le programme
(l’animation Director lorsqu’on est en mode auteur ou le "projecteur" si l’on est en mode consultation
grâce au runtime ou projecteur).
Gestionnaires événementiels
On nomme un "handler" selon la syntaxe:
on lenomduhandler
exŽcution d'une t‰che
end
▼ soit l’exemple :
on mouseDown
alert "La souris est enfoncŽe"
end
Dans ce cas, une fois la souris enfoncée (sur l’acteur contenant ce script), un message de type système doit
apparaître et indiquer : " La souris est enfoncée". Ici, mouseDown est donc l’événement initiateur, il s’agit
du moment où le pointeur de souris est enfoncé (down). On peut parler dans ce cas de programmation
événementielle, la référence est un événement précis.
Les principaux événements Lingo lors de l'exécution d'une animation :
PrepareFrame
avant d'entrer dans un frame
enterFrame
en entrant dans un frame
exitFrame
en sortant d'un frame
idle
lorsqu'aucune action n'est faite
keyDown
lorsqu'une touche est enfoncée
keyup
lorsqu'une touche est relevée
beginSprite
lorsqu'un sprite sans acteur est à nouveau occupé par un acteur
endSprite
lorsque qu'un sprite cesse d'être occupé par un acteur
mouseEnter
lorsque la souris entre dans le rectangle occupé par l’acteur sur le sprite*
mouseLeave
lorsque la souris sort du rectangle occupé par le comédien sur le sprite*
mouseUpOutside lorsque la souris est relevée en dehors du rectangle occupé par l’acteur sur le sprite*
mouseWithin
lorsque la souris est dans le rectangle occupé par le comédien sur le sprite*
mouseup
lorsque la souris est relevée dans le rectangle occupé par le comédien sur le sprite*
mousedown
lorsque la souris est enfoncée*
prepareMovie
avant le départ de l'animation
startMovie
au départ de l'animation
stopMovie
à la fin de l'animation
timeOut
losrque le temps prévu dans la propriété the timeoutlength est écoulé
* La forme de l’acteur ne sera pris en compte que si l'encre “copier” est utilisée, sinon c'est le rectangle
délimitant l’acteur (forme carrée avec poignées de redimensionnement) qui sert de zone de référence.
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
9
CHAPITRE 5 LINGO
2.3.1 STRUCTURE LINGO
VOIR
LEXIQUE
GESTIONNAIRES (SUITE)
Gestionnaires personnalisés
On peut très bien donner un nom personnalisé de handler à un script, l’intérêt est par exemple de pouvoir
appeler le même script depuis différents endroits du scénario simplement en appelant le script par son
nom et sans avoir à le réécrire plusieurs fois.
▼ Exemple :
(script sur un frame)
on exitFrame
beep
keskispasse
end
Ici, la tête de lecture va et éxécuter un son de bip système (commande Lingo bip) et chercher s’il existe un
script nommé keskispasse, si le handler existe dans la distribution, il va l’exécuter :
(script résidant en tant qu’acteur dans la distribution)
On keskispasse
set the stagecolor to 255
alert " il se passe des choses Žtranges iciÉ "
end
Ce script va changer la couleur de fond de la scène pour la couleur numéro 255 c’est à dire le noir (le 0
étant le blanc) avec une palette Windows ou Mac. Notons qu’il s’agit ici non pas d’une valeur absolue mais
du numéro de couleur dans la palette en cours.
Il va aussi afficher un message d’alerte de type message système contenant le texte " il se passe des choses
étranges ici… ".
attention
Si l’appellation d’un gestionnaire est libre, il faut s’interdire tout nom susceptible d’être
confondu par Lingo comme pouvant être un terme issu de sa syntaxe. L’anglais est donc
déconseillé, un nom évocateur est conseillé, un nom phonétique est un avantage certain. Il
est d’usage d’utiliser la règle qui prévaut au sein du langage Lingo de mettre en majuscule et
sans espace pour séparer chaque mot (Exemple : enterFrame).
Ainsi, le handler keskispasse aurait pu être écrit de manière plus académique mais moins
économique : quEstCeQuiSePasse.
Retenons que le but est d’éviter la confusion pour Lingo, pour soi-même et pour ses collègues de projet.
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
10
CHAPITRE 5 LINGO
VOIR
LEXIQUE
2.4 STRUCTURE LINGO
ÉLÉMENTS DE STRUCTURE LINGO
Lingo possède différents types d'éléments pour nous permettre de résoudre nos problématiques, elles sont
toutes constituantes de sa logique de programmation :
Type d’élément constituant
Tâche effectuée
Exemple
Les commandes
Exécute une action
Beep joue le son système
Alert affiche une fenêtre message
Les fonctions
Retourne une valeur, donne un résultat
the clickon retourne la valeur du
numéro de sprite sur lequel l'usager a
cliqué
Les constantes
Elément qui ressemble à une variable, mais qui
possède toujours la même valeur
empty : vide
Tab : touche de tabulation
Les propriétés
Attribut d'une composante, certaines propriétés set the visible of sprite
ne peuvent être que lues, d'autres peuvent être 10 to true
lues ou modifiées.
( peut être lue et modifiée )
put the rect of member 1
( ne peut être que lue )
Les structures de contrôle
(ou expressions logiques)
Eléments qui permettent la structure du langage if... then... else
repeat et repeat with
ou leur variations :
case a of
1 :
2 :
3 :
otherwise
end case
Les traitements de liste
Permettent de classer des données (textes,
nombres, chaînes…) ou des propriétés dans une
programmation élaborée.
Les listes permettent de travailler avec un
nombre de données non définies au départ et
apportent une grande souplesse. Introduisent la
programmation objet, leur bon usage demande
de l’expérience.
Les Xtras
FileIO, pour lire et écrire des fichiers
Modules complémentaires écrits le plus souvent externes sur le disque dur.
en C ou C++, ils permettent d'ajouter des fonc- Quick-Time Asset, pour la reconnaistions ou des commandes langage au LINGO.
sance des acteurs son, vidéo au format
Quick-Time.
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
Liste de chiffres : [1, 5, 8, 99]
ou des chaînes de caractères :
[" Janvier", " Février", " Mars", " Avril"]
ou une imbrication de listes :
[1, 5, " Mars", [6, 9] ]
11
CHAPITRE 5 LINGO
VOIR
LEXIQUE
3.1 CONDITIONS
LES CONDITIONS
Les conditions " if, then, else "
If ... then
...
else
...
end if
Le terme if nous permet de savoir si une condition déterminée est remplie.
Pour valider, on veut savoir si une variable est égale à la donnée "Emma".
La syntaxe d'un if simple est : if (une proposition logique) then une action à exécuter
▼ exemple :
if gPrenom = "Emma" then put gPrenom
Si la variable gPrenom est égale à la donnée "Emma" alors affiche la variable.
Pour réaliser une proposition logique, on utilisera souvent les éléments de comparaison:
=, <, >, =<, >=, <>.
On peut aussi obtenir des liens entre des propositions logiques : and, or
Le terme and : les deux propositions doivent être vraies pour donner vrai.
Le terme or : les deux propositions doivent être fausses pour donner faux.
▼ exemple :
If (gPrenom = "EmmaÓ) and (gNom <> "Faggionato") then
put gPrenom && gNom
end if
Note: && est un symbole qui permet la fusion de deux éléments en ajoutant un espace entre les deux.
La fonction the clickon retourne la valeur numérique du "sprite" sur lequel l'usager vient de cliquer :
If ... then ... : (simple)
▼ exemple :
if the clickon <> 0 then
-- l'usager a cliquŽ sur un acteur
end if
Si la fonction the clickon est différente de 0 alors l'usager a cliqué sur un acteur
If ... then ... else ... : (en séquence)
if the clickon = 0 then
-- l'usager n'a pas cliquŽ sur un acteur
else if the clickon = 1 then
-- l'usager a cliquŽ sur le comŽdien du "sprite" 1
else if the clickon = 2 then
-- l'usager a cliquŽ sur le comŽdien du "sprite" 2
end if
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
12
CHAPITRE 5 LINGO
3.1.1 CONDITIONS
VOIR
LEXIQUE
LES CONDITIONS (SUITE)
Pour valider en cascade, ou faire un choix, le if peu s'écrire en séquence : le programme regarde si la première condition est accomplie sinon, le programme poursuit la séquence. Si la condition est remplie, le
programme exécute la commande et sort de la séquence, les autres conditions ne seront pas regardées par
le programme.
If ... then ... else ... : (imbriqué)
if the clickon <> 0 then
-- l'usager a cliquŽ sur un acteur
if the clickon = 1 then
-- l'usager a cliquŽ sur le comŽdien du "sprite" 1
end if
end if
Lorsque nous avons besoin d'effectuer un choix selon la valeur d'une donnée ou d'une variable. Nous
pouvons bien sûr réaliser une série de if : si ma variable égale mon premier choix, sinon si ma variable
égale mon deuxième choix, sinon si ma variable égale mon troisième choix, etc., cette solution est fastidieuse.
Il vaut mieux utiliser ici la stucture Case ... of :
▼ exemple :
case valeurCouleur of
"bleu": set the forecolor of sprite 10 to 210
"rouge": set the forecolor of sprite 10 to 35
"noire": set the forecolor of sprite 10 to 255
"verte": set the forecolor of sprite 10 to 225
otherwise
set the forecolor of sprite 10 to 0
end case
Cette séquence permet de modifier la couleur de l’acteur placé sur le "sprite" 10 selon la valeur de la
variable valeurCouleur, ici "bleu", otherwise intervient pour tous les autres cas que ceux énumérés.
NOTES
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
13
CHAPITRE 5 LINGO
4.1 BOUCLES
VOIR
LEXIQUE
LES BOUCLES DE TÂCHES
Repeat
En programmation, la nécessité de traiter un grand nombre de données nous oblige à exécuter des commandes de façons répétitives. Le repeat nous est alors d'un grand secours.
La propriété the visible of sprite cache l’acteur placé sur le "sprite" numéro 10 :
▼ exemple :
Set the visible of sprite 10 to false
Repeat with
La boucle repeat exécute cette tâche sur plusieurs sprites (n étant une valeur variable) :
▼ exemple :
repeat with n = 10 to 48
Set the visible of sprite n to false
end repeat
Les "sprites" de 10 à 48 seront cachés, ce qui évite d'écrite 38 lignes de commandes !
Repeat while
La variable locale valeur est initialisée à 10 puis est incrémentée de 1 à chaque passage jusqu'à ce qu'elle
atteigne la valeur de 48. La boucle peut aussi se réaliser selon une proposition logique (n étant une valeur
variable) :
▼ exemple :
set valeur to 10
repeat while n < 49
set the visible of sprite n to false
set n to valeur + 2
end repeat
Tous les "sprites" pairs de 10 à 48 seront cachés, ceci évite d'écrire 19 lignes de commandes!
La variable locale valeur est initialisée à 10 puis est incrémentée de 2 à chaque passage jusqu'à ce qu'elle
atteigne la valeur de 48. La proposition logique valeur < 49 est la condition pour que le système poursuive
la boucle.
NOTES
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
14
CHAPITRE 5 LINGO
5.1 AFFECTATIONS
VOIR
LEXIQUE
LES AFFECTATIONS
Affectation :
Les commandes " Put et Set "
Les variables peuvent être : un texte, un nombre, une valeur logique
La commande SET s'utilise :
Set variablenumerique to 3 ou Set variablenumerique = 3
où variablenumerique est une variable qui reçoit la valeur numérique " 3 ".
Set variabletexte to "3"
Set variabletexte to "ce texte ci"
où variabletexte est une variable qui reçoit la valeur texte " 3 ",
puis est remplacé par la valeur texte " ce texte ci ".
De la même façon, la commande PUT peut s’écrire :
put 3 into variablenumerique
put "3" into variabletexte
put "un texte plus long" into variabletexte
Les affectations logiques :
La variable prend la valeur logique vrai ou faux. Attention à ne pas utiliser la même variable pour des types
de données différentes ( numérique, texte, logique ).
put true into variablelogique
set variablelogique to false
Autres syntaxes de la commande Put
Put ... into, Put ... after, Put ... before,
Lorsque l'on utilise la commande Put, on peut aussi utiliser after ou before au lieu de into.
Ainsi :
put "un texte comme •a" into variabletexte
la variable est égale à "un texte comme ça"
put "long" after variabletexte
la variable est égale à "un texte plus long"
Les termes after et before permettent d'ajouter à une variable des éléments avant ou après les données
déjà inscrites dans la variable.
NOTES
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
15
CHAPITRE 5 LINGO
6.1 VARIABLES
VOIR
LEXIQUE
MANIPULATION DES DONNÉES
Les variables
Les variables sont des contenants informatiques. Les données que nous manipulons à l'aide de l'ordinateur sont placées dans des contenants dans la mémoire de l'ordinateur. La variable est donc la représentation d'une donnée dans la mémoire de l'ordinateur.
▼ exemple : Put "Emma" into LeNomDeLaVariable
Dans cet exemple, en langage Lingo, la commande put place la donnée "Emma" dans la variable
LeNomDeLaVariable.
Le nom de la variable peut être une combinaison de caractères ou de nombres (alphanumérique).
Attention : ne pas employer d'espace ou de caractères exotiques ( /, é, ?, #, ", !, oe ) et ne pas commencer
par un nombre. Il est là aussi conseillé d'utiliser des noms de variables signifiants et sans ambiguïté, la
clarté fait partie de la démarche de programmation :
▼ exemple : Put "Emma" into prenom
L'utilisation des variables
Les variables permettent une utilisation souple des données. Par exemple, l'utilisation d'une variable prenom permet d'écrire un code qui affiche un salut personnalisé.
▼ exemple :
Put "Emma" into prenom
Set the text of member "Salut" to "Bonjour" && prenom
La donnée "Bonjour" et le contenu de la variable prenom sont placés dans le comédien texte portant le
nom "Salut". Ainsi, si l’acteur est placé sur la scène, on pourra y lire " Bonjour Emma ".
Les types de variables
Nous appelons les variables par le type de donnée qu'ils contiennent, ainsi :
Une variable alphanumérique contient des données textes, les caractères et les nombres (en tant que
caractères du clavier). Le terme STRING identifie ce type de variable.
▼ exemple : set unephrase = "Un bonjour!"
Une variable numérique contient des données nombres, des nombres entiers : le terme INTEGER identifie
ce type de variable ou des nombres avec des fractions : le terme FLOAT identifie ce type de variable.
▼ exemple : set unnombre = 456
Une variable logique contient une donnée logique, vrai ou faux. Le terme BOOLEAN identifie ce type de
variable.
▼ exemple : set fini = false
Une variable liste contient plusieurs données selon une structure linéaire.
Le terme LIST identifie ce type de variable.
▼ exemple : set uneliste = ["rouge","vert","bleu"]
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
16
CHAPITRE 5 LINGO
6.1.1 VARIABLES
VOIR
LEXIQUE
MANIPULATION DES DONNÉES (SUITE)
Les variables globales et locales
Il existe deux catégories de variables dans Lingo : les globales et les locales. Une variable globale est un
contenant utilisable partout dans l’animation et dans tous les "scripts" du programme.
Pour qu'une variable soit globale, il faut la déclarer globale à chaque utilisation (commande “global”). Il est
d’usage fréquent d’utiliser la lettre minuscule "g" pour nommer les variables globales afin de les distinguer
des variables locales dans les scripts.
▼ exemple 1 :
on mousedown
global gPrenom
put "Emma" into gPrenom
put "Moretti" into nom
put gPrenom
put nom
end
▼ exemple 2 :
on mouseup
global gPrenom
put gPrenom
put nom
end
Dans cet exemple, gPrenom est une variable globale et nom est une variable locale. L'affectation dans le
"handler" mousedown est correcte (exemple1), les variables affichent le contenu dans la fenêtre message.
Par contre dans le gestionnaire mouseUp (exemple2) , seule la variable globale gPrenom fonctionne correctement, la variable locale nom génère un message d'erreur parce que la variable locale nom n'a pas été
initialisée.
NOTES
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
17
CHAPITRE 5 LINGO
6.1.2 VARIABLES
VOIR
LEXIQUE
MANIPULATION DES DONNÉES (SUITE)
Etapes d'une variable :
1. Initialisation: Donner une valeur de départ à la variable.
L'initialisation est en fait une affectation.
Il faut toujours donner une valeur initiale pour les variables globales.
Le "handler" prepareMovie, qui est exécuté au démarrage de l'animation est l'endroit le plus approprié.
▼ exemple :
on prepareMovie
global gPrenom
put EMPTY into gPrenom
end
La valeur initiale sera égale à EMPTY qui équivaut à un texte vide.
Si une variable n'est pas initialisée, elle donnera une erreur de type "VOID".
2. Affectation : Donner une valeur nouvelle à la variable.
En LINGO, les affectations se réalisent avec les commandes PUT ou SET
▼ exemple :
Put 2 into nombre
ou
Set nombre to 2
Place la valeur numérique 2 dans la variable nombre :
3. Validation : Vérifier si la variable est valide pour l'utilisation.
On doit faire la vérification avant d'utiliser une variable ; si la variable n'est pas valide ceci provoquera un
arrêt du programme et un message d'erreur.
Il faut déterminer les conditions de la validation et les tester.
Par exemple : si la variable gPrenom n'est pas vide, alors affiche la variable gPrenom.
On utilisera donc l'expression logique du langage : if ... then ... end if.
4. Utilisation : Utiliser la donnée.
Un exemple de cette technique : vous pouvez demander le nom de l'usager, le capter dans une variable
puis l'afficher dans un écran. (exercice “variable.dir)
NOTES
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
18
CHAPITRE 5 LINGO
7.1 COMPORTEMENTS
VOIR
LEXIQUE
LES COMPORTEMENTS (BEHAVIORS)
Depuis la version 6 de Director, une nouvelle composante est apparue au sein de Lingo : la
programmation " sans scripts " à l’aide de comportement ou "Behavior". Il s’agit de la possibilité pour
l’auteur de créer un certain niveau d’interactivité avec des comportements déjà préécrits en Lingo, et ce à
travers des boîtes de dialogues et des menus déroulants. On pourrait parler de programmation en mode
graphique.
On peut écrire soi-même des comportements même si dans un premier temps on peut se contenter d’utiliser ceux de la bibliothèque. Un comportement s’écrit en Lingo et utilise les "handlers" comme un script
normal. On attache ces "handlers" à un sprite ou à un frame. On utilise à la suite du "handler" la variable
me qui contient la référence à l'objet comportement proprement dit.
▼ exemple :
on mouseUp me
set the foreColor of sprite the spritenum of me to random(255)
end
Cette syntaxe permet au comportement de reconnaître que le numéro du sprite, the spritenum of me, est
celui sur lequel le comportement est présentement attaché. Dans l’exemple ci-dessus, un acteur de couleur rouge placé sur le "stage" va changer de couleur de façon aléatoire. Le comportement intercepte le
message on mouseUp et modifie la propriété the foreColor du "sprite" sur lequel on vient de cliquer par
un tirage aléatoire (fonction random).
Il existe dans Director 6.5 une bibliothèque de comportement pour un grand nombre de cas de figure, ils
sont rangés par type de média et par type d’événements.
Leur usage est simple mais ne doit pas masquer qu’une réflexion préalable à leur usage est toujours indispensable :
Existe-t-il un moyen plus simple et plus économique de réaliser le même effet ?
L’usage de tel ou tel comportement ne va-t-il pas interférer avec un autre événement que je dois par
ailleurs écrire sous forme de script Lingo ?
L’erreur la plus fréquente consiste à cumuler les différents comportements avec le même événement initiateur, ce qui ne manque pas de ralentir l’animation ou d’être une source de disfonctionnement.
Le comportement, une fois glissé sur une image objet (sprite) est visible sur la zone d’information de
l’image objet et identifiée par un losange vert. Un double clic sur lui ouvre la fenêtre des réglages de celuici.
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
19
CHAPITRE 5 LINGO
8.1 EXERCICE
UN
VOIR
LEXIQUE
MESSAGE DE BIENVENUE PERSONNALISÉ
utilisation de variables globales :
Ici nous allons personnaliser un message de bienvenue et demander son prénom à l’utilisateur. Ainsi, il
sera possible de personnaliser les futurs messages à son attention. [fichier Director : variable.dir]
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
20
CHAPITRE 5 LINGO
VOIR
LEXIQUE
8.2 EXERCICE
UNE
TABLE DE MIXAGE
Utilisation de boucles de répétition
Ici nous allons réaliser une petite table de mixage de sons comportant 6 sons et permettant de mixer à
chaque fois deux sons. Notons qu’il serait possible d’aller jusqu’à 4 sons simultanés sous Windows et 8
sons sous Macintosh. [fichier Director : mixage.dir]
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
21
CHAPITRE 5 LINGO
8.3 EXERCICE
VOIR
LEXIQUE
UNE PLATINE DE COMMANDE DE SONS
Utilisation de la fonction “the visible of sprite”
Ici nous allons réaliser une platine de commandes de sons comportant 3 sons et permettant de monter ou
baisser le volume sonore. L’accent est mis ici sur la fonction " the visible of sprite " qui permet de masquer
ou d’afficher le contenu d’une sprite. [ exercice pilotson.dir ]
Une variante de ce code permettrait de
condenser avantageusement des dizaines,
voire des centaines de lignes de code, surtout
si le nombre de sprites à masquer/afficher est
grand. Il vaudrait alors mieux avoir recours au
" repeat with " comme le montre l’exemple cicontre.
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
22
CHAPITRE 5 LINGO
8.4 EXERCICE
VOIR
LEXIQUE
FONDU SONORE DE PROXIMITÉ
Utilisation de fonctions mathématiques
Ici nous allons réaliser à l’aide de deux fonctions mathématiques " sqrt " et " power " de Lingo, un fondu
sonore en fonction de la position de la souris par rapport à une image objet. Au dessus de cette image, le
son sera au plus fort, loin de cette image, le son redescendra (ici à la valeur “20”).
[ exercice proxyfade.dir ]
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
23
CHAPITRE 5 LINGO
VOIR
LEXIQUE
9.1 GLOSSAIRE LINGO
A-G
A
and (proposition logique)
Opération logique, les deux
propositions doivent être vrai
pour se réaliser.
ou du clavier n'est possible
pendant l'attente.
▼
delay 60
-- attends 1 secondes
E
empty,
Constante, équivalent à un
caractère vide.
G
global variable
Mot clé identifiant une ou des
variables comme globale,
chaque variable globale doit
être déclarée à chaque fois
qu'elle est utilisée.
▼
▼
if unevariable =
empty then
put "la variable est
vide"
end if
global variable,
compteur
▼
if (nombre > untel)
and (nombre =
unautre) then
actions
end if
B
on beginSprite
Message, lorsqu'un acteur
prend place sur la scène.
▼
on beginSprite
actions
end beginSprite
enterframe
Message, lorsque l'animation
entre dans un frame.
▼
C
the clickon
Fonction, donne le numéro
du sprite sur lequel on a cliqué.
▼
put the clickon into
variable
the colordepth
Propriété, retourne ou affecte
le nombre de couleurs affichables à l'écran
▼
put the colordepth
into unevariable
set the colordepth to
8
D
delay nombredeticks
Commande, produit un
moment d'attente de la durée
spécifiée par le paramètre
nombredeticks.
(1 tick = 1/60e de seconde).
Aucune activité de la souris
empty then
actions
end if
on enterframe
actions
end enterframe
exitframe
Message, lorsque l'animation
sort d'un frame.
▼
on exitframe
actions
end exitframe
F
the frame
Fonction, retourne le numéro
du frame.
▼
put the frame into
variable
the framelabel
Propriété, donne le nom du
marqueur du frame présentement actif, s'il n'y a pas de
marqueur la propriété donne
une caractère vide.
go to
(quel frame, quel marqueur)
Commande, permet de naviguer vers le frame ou le marqueur désigné.
▼
go
ou
go
ou
go
ou
go
to frame 20
to 20
to ÒmarqueurÓ
ÒmarqueurÓ
go loop
Commande, permet de naviguer vers le frame ou le marqueur désigné par la dernière
affectation de la commade GO
ou PLAY.
▼
go loop
go next
Commande, permet de naviguer vers le marqueur suivant.
go next
go previous
commande, permet de naviguer vers le marqueur précédent.
▼
go previous
▼
if the framelabel =
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
24
CHAPITRE 5 LINGO
VOIR
LEXIQUE
9.2 GLOSSAIRE LINGO
H-M
H
halt
Commande, arrête le "handler" en cours puis arrête l'animation.
Message, lorsqu'une touche
du clavier est enfoncée.
on keyup
idem avec touche clavier relevée.
souris est enfoncée.
▼
if the mousedown then
actions
end if
▼
on exitFrame
halt
end
▼
on keydown
actions
en keydown
I
on idle
Message, ce message est produit lorsqu'aucune autre activité occupe Director. Il est
utile pour intercepter un autre
état que les messages courants.
L
the locH of sprite
Propriété, donne la position
horizontale d'un sprite, cette
propriété peut être lue ou
affectée.
▼
▼
on idle
actions
end idle
put the locH of sprite 8 into unnombre
put unnombre + 10
into unnombre
set the locH of
sprite 8 to unnombre
if
Proposition logique . Si une
proposition logique est vraie
alors réaliser des actions
fin du si.
▼
if variable = "Emma"
then
go to frame 10
else
go to frame 20
end if
integerP
Fonction, évalue si la variable
est un nombre INTEGER.
▼
put the castnum of
sprite 5 into
unnombre
if
integerP(unnombre)
then
actions
end if
K
on keydown
on mouseEnter
Message, au momment où la
souris pénètre dans le rectangle du comédien sur le
"sprite".
▼
the locV of sprite
Propriété, donne la position
verticale d'un sprite, cette
propriété peut être lue ou
affectée.
▼
put the locV of sprite 8 into unnombre
put unnombre + 10
into unnombre
set the locV of
sprite 8 to unnombre
M
on mousedown
Message lorsque la souris est
enfoncée.
▼
on mousedown
actions
end mousedown
the mousedown
Fonction, est vraie lorsque la
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
on mouseEnter
actions
end mouseEnter
on mouseLeave
Message, au momment où la
souris sort du rectangle du
comédien sur le "sprite".
▼
on mouseLeave
actions
end mouseLeave
on mouseup
Message, lorsque la souris est
relevée.
▼
on mouseup
actions
end mouseup
on mouseupOutside
Message, lorsque la souris est
relevée en dehors de la zone
du "sprite" déjà enfoncé.
▼
on mouseupOutside
actions
end mouseupOutside
on mouseWithin
Message, lorsque la souris est
dans la zone du "sprite". La
souris n'a pas besoin d'être
enfoncée.
▼
on mouseWithin
actions
end mouseWithin
25
CHAPITRE 5 LINGO
VOIR
LEXIQUE
9.3 GLOSSAIRE LINGO
N-R
the mouseup
Fonction, est vraie lorsque la
souris est relevée.
▼
if the mousedown then
actions
end if
N
not
Opération logique, renverse la
proposition.
▼
if not(nombre >
autre) and (nombre =
troisi•me) then
actions
end if
O
open window uneanimation
Commande, joue une animation Director dans une fenêtre
au-dessus de la scène.
▼
open window
"Animation"
or
(proposition logique)
Opération logique, les deux
doivent être fausses pour ne
pas se réaliser.
▼
if (nombre > unautre)
or (nombre = untroisi•me) then
actions
end if
P
the pathname
Fonction, retourne un texte
du chemin (full pathname) du
dossier qui contient l'animation.
▼
put the pathname into
unevariable
▼
(place avant)
put contenu after contenant
(place après)
Commande, permet d'affecter
ou d'ajouter un contenu à des
variables
play done
▼
play done
Commande, permet de
retourner au dernier endroit
où une commande PLAY a été
demandée.
play
play quel frame, quel marqueur (de quel movie)
Commande. permet de naviguer vers le frame ou le marqueur désigné.
▼
play frame 5 of movie
"Aide"
on prepareFrame
Message, est émis avant que le
frame entre en action sur la
scène.
▼
on prepareFrame
actions
end prepareFrame
puppetSound
puppetsound quelson, puppetsound quelcannal, quelson,
Commande, joue le son du
comédien spécifié, si un cannal est spécifié le son est joué
sur ce canal
puppetsound 0 arrête de jouer
le son
▼
puppetsound "monson"
ou
puppetsound 0
put "Emma" into
variable
ou
put "Faggionato"
after variable
Q
the quicktimepresent
Fonction, retourne si l'extension QuickTime est actif dans
le système.
▼
if the quicktimepresent then
actions
end if
R
repeat
repeat with variable
= unnombre to unautre
actions
end repeat
Mot clé, permet de faire une
boucle à l'aide d'une variable
incrémentée de 1 à chaque
cycle jusqu'à atteindre le
deuxième nombre.
▼
puppetsound 2, "monson"
ou
puppetsound 2, 0
repeat with unnombre
= 1 to 5
actions
end repeat
(à chaque cycle le variable
augmente de 1)
put
put contenu into contenant
(remplace)
put contenu before contenant
repeat while
Proposition logique
(répète tant qu’une condition
n’est pas remplie)
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
26
CHAPITRE 5 LINGO
VOIR
LEXIQUE
9.4 GLOSSAIRE LINGO
S-V
rollover
rollover(quelsprite)
fonction,
Retourne vrai si le curseur est
au-dessus du rectangle de
l'élément dans le sprite spécifié.
▼
if rollover(8) then
actions
end if
S
set
set contenant to contenu
set contenant = contenu
Commande, permet d'affecter
un contenu à des variables ou
une propriété à un objet.
end keydown
on startmovie
Message, lorsque l'animation
commence à jouer.
▼
on startmovie
actions
end startmovie
on stopmovie
Idem lorsque l'animation
arrête de jouer.
riable
(la variable unevariable est
maintenant égale à 7)
put unevariable +
unevariable into unevariable
Ou placer 7 + 7 dans la
variable unevariable
(la variable unevariable est
maintenant égale à 14).
voidP(unevariable)
Fonction, retourne vrai si la
variable n'a pas été initialisée.
T
the timer
Propriété, donne le nombre
de ticks (1/60 de secondes)
depuis que la commande
STARTIMER a été demandée.
the volume of sound
quelcanal
Propriété, détermine le niveau
sonore du canal
spécifié, 0 est le silence et 255
est le volume maximum.
▼
▼
on compteur
startimer
repeat while the
timer < (60 * 3)
-- attend 3 secondes
nothing
end repeat
end compteur
set the volume of
sound 1 to 128
&&
&&: variabletexte &&
autretexte
Opération de concaténation
de texte (enchaînement),
place un espace entre les éléments enchaînés.
if soundbusy(1) then
actions
end if
U
updatestage
Commande, remet à jour la
scène.
the soundlevel
Propriété, donne ou affecte le
niveau sonore, 0 est le silence,
7 le son maximum.
▼
put "Une" into
variable1
put "variable" into
variable2
put variable1 &&
variable2 into
variable3
(la variable3 égale maintenant: "Une variable").
▼
set variable to
"Emma"
set the castnumber of
sprite 6 to 33
soundBusy
soundbusy(quelcanaldeson)
Fonction, retourne vrai si un
son joue dans le canal spécifié
▼
▼
set the membernum of
sprite 6 to 33
updatestage
▼
set the soundlevel to
5
startimer
Commande, replace la propriété de compteur de temps
à zéro.
▼
on keydown
startimer
V
Variable : un nom alphanumérique, qui représente un
contenant en mémoire.
On peut affecter un contenu à
son contenant par les commandes PUT et SET.
▼
put 5 into uneva-
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
&: variabletexte &
autretexte
Opération de concaténation
de texte (enchaînement).
▼
put "Une" into
variable1
put "variable" into
variable2
27
CHAPITRE 5 LINGO
VOIR
LEXIQUE
9.5 GLOSSAIRE LINGO
SYMBOLES
put variable1 &
variable2 into
variable3
(la variable3 égale maintenant: "Unevariable").
( )
(proposition logique) ou (proposition numérique)
Regroupe par ordre de priorité
des propositions.
▼
6 + (6 * 2)
- - rŽsultat 18
(6 + 6) * 2
- - rŽsultat 24
- délimiteur de commentaires
▼
-- ceci est un commentaire
<
Proposition logique, compare
deux éléments et regarde si le
premier est plus petit.
▼
unevariable < 6
<>
Proposition logique, compare
deux éléments et regarde s'ils
sont différents.
▼
unevariable <> 6
=
Proposition logique, compare
deux éléments et regarde s'ils
sont identiques.
▼
unevariable = 6
>
Proposition logique, compare
deux éléments et regarde si le
premier est plus grand.
▼
unevariable > 6
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
28
CHAPITRE 5 LINGO
VOIR
LEXIQUE
10.1 BIBLIOGRAPHIE
BIBLIOGRAPHIE
Liens Web
Cours de programmation à l'aide du langage – LINGO
Roger Morin - Cégep de Sainte-Foy – Canada - 1997
Mail : [email protected]
Web : http://www.cegep-ste-foy.qc.ca/~rmorin/lingo/
Livres
Director 6 - Le guide pratique des professionnels du multimédia
Web : http://www.vuibert.fr
Gary Rosenzweig – Traduction Gérard Beniest – Ed. Vuibert – Paris – 1998
CD-Rom
Encarta 98 Encyclopédie Microsoft Editeur
Documentation
Macromedia Director 6.5 fournie avec le logiciel
Aide en ligne du logiciel Macromedia Director 6.5
NOTES
➤ langage lingo [mac-win] 1998 - [email protected] / http://perso.magic.fr/lucdall
29