Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Paramétrer son application

Compatible Director MX2004. Cliquer pour en savoir plus sur les compatibilités.Par glurp (Elliot Coene), le 19 février 2010

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