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