Figer un logo sur la scène de Director 6
L'Xobjet PermPict permet d'afficher une image PICT en un
endroit quelconque de la scène et ce, sans modifier
le scénario. On utilisera PermPict pour insérer
un logo par exemple au premier plan de tous les écran
d'une animation complexe. Mise en uvre de l'Xchose,
ici avec Director 6.
On a placé le fichier de l'Xobjet sur le bureau
du Mac. Dans la fenêtre message de D6, on saisit :
openXlib "Macintosh HD:Desktop folder:PermPict Xobj"
Afin de nous assurer que les ressources XCOD de PermPict
sont désormais utilisables, on s'assure des Xtras,
Xobjets et autres Xchoses disponibles en saisissant "ShowXlib".
On obtient :
-- XLibraries:
-- Xtra: ScriptColor
-- Xtra: PrintOMatic_Lite
-- Xtra: QTVRXtra
-- Xtra: Mui
-- Xtra: fileio
-- Xtra: NetLingo
-- "*Standard.xlib"
-- XObject: SerialPort Id:200
-- XObject: XCMDGlue Id:2020
-- "boot:desktop folder:PermPict Xobj"
-- XObject: PermPict Id:775
Le contenu de cette liste peut varier mais sa structure
est toujours la même : D'abord les Xtras (sous le
titre XLibrairies) puis viennent les Xobjets et autres (sous
le titre Standard.xlib). Pour info, XCMDGlue est un xobjet
intégré à Director qui permet d'utiliser
les fragments de code ( XCMDs, XFCNs) destinés initialement
à Hypercard, (sur PC, on rencontrera DLLGlue
qui joue ce même rôle d'intermédiaire
à l'usage des librairies liées dynamiques
DLL). On a ici avec SerialPort deux ressources XCODs intégrées
à Director et non pas des XObjets externes.
Pour apparaître dans cette liste, les xtras Lingo
doivent être placés dans le dossier Xtras au
lancement de l'application ou bien encore être ouvertes
ponctuellement par la commande openXlib.
Les Xobjets doivent avoir été appelés
par openXlib.
Les XCMDs et XFCNs doivent être ouvertes par openXlib.
L'xobjet intégré XCMDGlue se chargeant de
gérer dans Director l'utilisation des ces commandes
externes destinées initialement à enrichir
Hypercard.
Notre Xobjet est ouverte, on demande le détail de
ses méthodes en lui passant la méthode globale
"mdescribe" :
put PermPict(mDescribe)
-- Factory: PermPict ID:775
-- PermPict XObject
-- Draws pictures in un-disturbable form on the stage
-- Version 1.0b1, March 6, 1994
-- ©1994 Electronic Ink
I mNew
X mDispose
V mDraw, PICT, top, left [bottom, right]
X mUndraw
XI mHideMessages, trueOrFalse
----
-- <Null>
Ces lignes présentent une à une et de façon
conventionnelle, les méthodes utilisables pour PermPict.
Chacune de ces lignes est rédigée de la même
manière :
Le groupe de lettres initiales (capitales souvent) fournit
de indications sur le type que la fonction retourne (premier
caractère) et le type d'arguments qu'elle requiert
(tous les autres).
X indique que la fonction ne retourne aucune valeur
I désigne un entier
S une chaîne de caractères entre guillemets
plus rarement on rencontre dans ces listes :
L pour une liste d'entiers
P pour une image
O pour une instance d'Xobjet
V pour un type de donnée variable (ici une image
PICT)
Il est probable que la description des méthodes
de PermPict contienne des erreurs ou en tous cas, ne respecte
pas ces conventions. La mise en uvre de l'Xobjet reste
traditionnelle néanmoins : Nous devons commencer
par créer une instance de l'objet en lui passant
la méthode globale mNew. La variable Crapo nous permettra
de désigner l'instance.
set CRAPO to PermPict(mNew)
La méthode mNew est passée à l'Xobjet.
Un objet-enfant est créé en mémoire,
stocké dans la variable CRAPO. La méthode
utilisée ne renvoie aucun code d'erreur (le "I" semble
l'indiquer pourtant !).
L'instance créée, nous pouvons lui adresser
nos instruction en l'invoquant et en lui passant une méthode :
La méthode "mDraw" requiert une image au format PICT.
Ce peut être un fichier externe ou bien un acteur
bitmap. Le croirez vous ? une photo de crapaud est
justement sur le bureau du Mac...
crapo(mDraw,"Macintosh HD:Desktop folder:CRAPAUD.PICT",
200,150)
On ne ressent aucune lenteur, pas même un accès
disque si l'image est de petite taille. Par dessus la scène
de Director - et seulement par dessus le scène -
apparaît notre photo. Même un film QuickTime
passe au-dessous !
Bien sûr PermPict admet une mise à jour dynamique.
Pour utiliser un acteur en lieu et place d'un fichier externe,
on utilise l'expression Lingo "the picture of member 2".
set TOTO to the picture of member 2
crapo(mDraw,TOTO, 200,150)
En omettant les coordonnées droite et basse de l'image
on évite son étirement et on l'affiche à
sa taille réelle. inversement avec :
crapo(mDraw,TOTO, 200,150, 220, 170)
On contraint le bitmap à un carré de 20 pixels
de cotés. On efface cette image par...
crapo(mUnDraw)
On détruit l'instance par le conventionnel "mDispose".
crapo(mDispose)
Enfin on n'oublie pas de fermer le fichier Xlib par Lingo :
closeXlib
L'xobjet PermPict est téléchargeable sur
le site Electronic Ink : http://www.printomatic.com/products.cfm#xobjs
|