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