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).
<
Sommaire
|