Utiliser les timers dans Director

On a très souvent besoin d’invoquer une fonction à intervalles réguliers dans Director. Je vais vous montrer ici comment mettre en oeuvre les timers de Director.

Création d’un timer

t1 = new timeout("timeoutid",1000, #affiche)

Ici, on affecte à une variable t1 la valeur retournée par l’objet timeout, ce qui nous permettra d’y faire référence par la suite, par exemple pour le supprimer.
L’objet timeout attend au moins 3 paramètres : un identifiant unique sous forme de chaîne de caractères, un nombre de millisecondes et le nom d’une fonction.

Dans l’exemple ci-dessus, la fonction affiche() sera appelée toutes les secondes.

attention : ce code n’est valable qu’à partir de MX 2004 !

Supprimer un timer

Par exemple, on veut afficher un compteur toutes les secondes pendant 10 secondes seulement

Code dans un script d’animation :

global t1, compteur
  on startMovie
    compteur = 0
    t1 = new timeout("timeoutid",1000, #affiche)
 end

  on affiche
    compteur = compteur + 1
    if compteur < 11 then
      -- on écrit la valeur de compteur dans un champ de texte
      member("afficheCompteur").text = string(compteur)
   else
     member("afficheCompteur").text = "" -- on efface le champ
     t1.forget() -- on supprime le timer
   end if
 end

exemple faisant appel à 2 timers

On a parfois besoin de créer plusieurs timers, par exemple si on veut afficher un objet et ensuite le masquer à intervalles réguliers. Dans l’exemple suivant, on affiche un sprite pendant 1/2 seconde, on le masque ensuite pendant une seconde et on recommence.

Voici le code à mettre dans un script d’animation

global t1, t2

  on prepareMovie
   sprite(1).visible = 0 -- on cache d'abord le sprite
   t1 = new timeout("timeoutid",1000, #affiche) -- premier appel
 end
  on affiche
   t1.forget() -- on supprime ce timer
   sprite(1).visible = 1
   t2 = new timeout("timeoutid", 500, #masque)--nouvel objet de tempo
 end

  on masque
   t2.forget()
   sprite(1).visible = 0
   t1 = new timeout("timeoutid",1000, #affiche)
 end

Voilà pour une utilisation basique des timers dans DIrector

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.