Paramétrer son application
Utilisation de getPropertyDescriptionList et de FileIO
Tout projet comporte son lot de variables servant de paramètres à l'application.
Or il est souvent intéressant de pouvoir modifier ces paramètres rapidement en phase de beta test.
Pour faciliter ces ultimes réglages, il existe différentes solutions et outils.
Tout d'abord, nous allons aborder getPropertyDescriptionList, qui est un événement Director permettant de créer une boite de dialogue de paramétrages lorsque le script de comportement (behavior) est placé sur un sprite.
Il concerne donc la programmation encore légèrement manuelle (voir le tutorial sur les diverses utilisations de Director).
Ensuite, nous verrons comment récupérer des paramètres dans un fichier externe, en utilisant l'Xtra FileIO (intégré à Director).
Ceci est très pratique, car il permet de modifier l'application sans avoir besoin d'ouvrir Director.
Note : Pour des raisons de sécurité FileIO ne fonctionne pas en shockwave, uniquement en projection .exe ou en mode auteur…
L'exercice
Dans cet exemple nous allons afficher un champ texte qui recevra d'autres paramètres au clic de souris, d'abord avec getPropertyDescriptionList et ensuite par des paramètres externes avec FileIO.
Ouvrez donc une nouvelle application, créer votre champ texte appelé “texte_txt” et placez le sur la timeline, au sprite 1 de la frame 1 à la frame 20.
Ensuite, créez votre script de comportement “stop” placé à la frame 20.
Pour rappel, un stop se programme comme suit :
on exitframe me go to the frame end
1/ getpropertyDescriptionList
Créez un nouveau script appelé “texte_behavior”. Nous allons définir l'événement getPropertyDescriptionList. Ce dernier consiste donc en une liste que nous allons remplir avec plusieurs paramètres pour ensuite la retourner.
property pTaille, pContenu, pFade on getpropertydescriptionlist me -- Définission d'une liste de propriétés -- tList = [:] -- Premier paramètre ; la taille du texte -- tTaille = [#format: #integer, #range: [10,12,14,16,24], #default:14, #comment: "Taille"] tList.addprop(#pTaille, tTaille) -- Deuxième paramètre ; le contenu -- tContenu = [#format: #string, #default:"Bonjour à tous, je suis une variable !", #comment: "Contenu"] tList.addprop(#pContenu, tContenu) -- Troisième paramètre ; Opacité 50% -- tFade= [#format: #boolean, #default:true, #comment: "Opacité 50% ?"] tList.addprop(#pFade, tFade) return tList end on beginsprite me -- Applique des valeurs fixes au démarrage -- tMember = sprite(me.spritenum).member tMember.fontSize = 20 tMember.text = "Cliquez moi dessus !" sprite(me.spritenum).blend = 100 end on mouseup me -- Les paramètres sont appliqués -- tMember = sprite(me.spritenum).member tMember.fontSize = pTaille tMember.text = pContenu if pFade = true then sprite(me.spritenum).blend = 50 else sprite(me.spritenum).blend = 100 end if end
Faites ensuite un Drag&drop sur le sprite 1 pour lui attacher le comportement.
Vous verrez apparaître la boite de dialogue.
Si vous jouez l'application, vous verrez que le clic gauche fonctionne et transforme bien notre acteur texte.
Remarque importante :
Une fois le script de comportement attaché au sprite, si vous désirez revoir la boite de dialogue et modifier les paramètres, il suffit de double-cliquer sur le script correspondant dans “l'inspecteur de comportement” (panneau de droite).
2/ FileIO
Nous allons maintenant créer et utiliser un fichier texte contenant des paramètres différents qui seront appliqués lors d'un clic gauche sur le texte avec la touche espace enfoncée.
Créez donc le fichier texte à côté de l'application et nommez le “param.txt” en le complétant comme ceci :
TAILLE=16 CONTENU=Je suis un document externe OPACITE50=1
Vous pouvez soit recréer une nouvelle application identique, soit repartir de celle-ci.
Dans les deux cas, il ne reste plus qu'à effacer l'ancien “texte_behavior” et à coder le nouveau :
property pTaille, pContenu, pFade on beginsprite me -- Applique des valeurs fixes au démarrage -- tMember = sprite(me.spritenum).member tMember.fontSize = 20 tMember.text = "Cliquez moi dessus !" sprite(me.spritenum).blend = 100 me.readParam() end on readParam me if the runMode = "Plugin" then -- Vérification que l'application ne tourne pas en mode Plugin (Shockwave Player) -- alert("Note : Pour des raisons de sécurité FileIO ne fonctionne pas en shockwave, uniquement en projection .exe ou en mode auteur...") else -- Lecture du fichier texte -- tFileIO = xtra("fileIO").new() tFileIO.openfile("param.txt", 1) tParam = tFileIO.readFile() tFileIO.closefile() tFileIO = 1 -- Création d'une liste de propriétés -- the itemDelimiter = "=" tParamList = [:] repeat with i = 1 to tParam.line.count tLigne = tParam.line[i] tParamList.addprop(symbol(tLigne.item[1]), tLigne.item[2]) end repeat -- Enregistre les nouvelles valeurs -- pTaille = integer(tParamList[#TAILLE]) pContenu = tParamList[#CONTENU] pFade = integer(tParamList[#OPACITE50]) end if end on mouseup me -- Les paramètres sont appliqués -- tMember = sprite(me.spritenum).member tMember.fontSize = pTaille tMember.text = pContenu if pFade = true then sprite(me.spritenum).blend = 50 else sprite(me.spritenum).blend = 100 end if end
Résultat
Voilà, les deux applications sont terminées.
Lors d'un clic gauche simple, les paramètres de la getPropertyDescriptionList sont utilisés dans la première et ceux du fichier externe dans la deuxième.
En savoir plus
