Director 7 - nouvelles fonctions Lingo
Nous vous proposons d'explorer ici quelques-unes des possibilités
nouvelles du Lingo de Director 7.0 et 7.0.2. Rappelons que
le passage à cette "mise à jour 7.0.2" est
fortement conseillé. L'installeur téléchargeable
sur le
site Macromedia, place plus de 180 fichiers dans la
corbeille et parmi ceux-ci, l'application elle-même
!
Termes Lingo abordés :
La fonction map()
La fonction map() requiert trois rectangles en argument
et retourne un quatrième qui est au 3ème ce
que le 2ème est au premier. vous n'avez rien compris
? Rassurez-vous, nous non plus au début ! Un
simple et évidente application de cette fonction
est la réalisation d'un effet de zoom.
Le déplacement par l'utilisateur du sprite 4, une
simple forme QuickDraw déplaçable, provoque
un déplacement proportionnel du grand bitmap (sprite
1) sous le sprite 3. La réalisation d'un tel effet
était longuement expliquée dans un
article récent du CrapoWeb. oubliez cela :
plus aucun besoin de calculs savants désormais. On
place simplement les protagoniste sur la scène, on
rend le sprite 4 déplaçable en cliquant sur
l'icône du milieu, ici...
...et, dans le script de tableau, simplement :
on ExitFrame
sprite(1).rect
= map(sprite(2).rect, sprite(4).rect, sprite(3).rect)
go the
frame
end
Director déforme seul le grand bitmap pour que son
rapport au sprite 3 soit équivalent au rapport du
sprite 1 au sprite 4. Déroutant de simplicité
!
The windowType of window... = member x
C'est bien une MIAW (movie in a window) que l'on voit sur
cette copie d'écran, une animation Director s'affichant
dans une fenêtre percée en son centre !
Étrangement, seule la version mise à jour
7.02 permet de réaliser cet effet et d'utiliser un
acteur bitmap en guise de windowType of window. Apparemment
aussi ça ne marche que dans une projecteur. Voyons
un peu cela ...
On doit d'abord créer une mini animation qui sera
affichée dans la fenêtre. Nous enregistrons
ce fichier sous le nom "petite.dir". Enfin, nous créons
un nouveau fichier "principale.dir", notre lanceur qui une
fois converti en projecteur, permettra d'ouvrir la MIAW
"petite.dir".
Dans la distribution de "principale.dir" on crée
un acteur bitmap que l'on converti ensuite en 1 bit par
Modifier/Transformer bitmap... C'est cet acteur (ici en
forme de cur, member 3) qui nous servira de fenêtre
(?).
La scène de "principale.dir" ne contient qu'un simple
bouton auquel est associé le script suivant :
on mouseUp
set the fileName
of window
"essai" to "petite.dir"
set the windowType
of window
"essai" to member
3
open window "essai"
end
On enregistre ce deuxième fichier puis, on le transforme
par Fichier/Créer un projecteur...
Oh !
The stage.picture et crop()
La propriété "picture", propriété
image d'un acteur de type bitmap n'est pas nouvelle. Ce
qui l'est, c'est que désormais les fenêtres
des MIAW (et donc la scène) sont dotées de
cette propriété picture. Afin de mettre cela
en évidence, nous nous proposons de réaliser
un copie d'écran via Lingo. Trois lignes de code
suffisent - saisies dans la fenêtre message.
on commence par créer via Lingo un nouvel acteur
de type bitmap dans la distribution. ce sera l'acteur numéro
3 (la place est vide).
new(#bitmap,
member 3)
on obtient alors que cet acteur reprenne l'image de la
scène par...
member(3).picture
= the stage.picture
Eh, pas mal ! Cet acteur aux dimensions de la scène
vous parait-il trop grand ? lingo va nous permettre
de le recadrer exactement à l'aide de la nouvelle
instruction crop(). On notera au passage la syntaxe avec
parenthèse de cette commande - À s'en
tenir aux règles il s'agit d'une fonction !
Étrange le Lingo ces derniers temps ! Reprenons
: deux paramètres doivent être passés
à crop() : le bitmap à recadrer et le
rectangle de recadrage.
crop(member
3, rect(20, 30, 120, 130) )
Et hop ! Un carré de 100 pixels de cotés
nous apparaît dans la distribution. Dans l'exemple
qui suit nous avons utilisé crop() en boucle sur
une photo d'Imac afin de créer 100 acteurs. Nous
aurions pu tout autant associer l'instruction à une
auto génération de scénario (beginRecording).
|