Lingo - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Caractéristiques du langage

La syntaxe du Lingo est très simple et très lisible, elle rappelle (de loin) le Basic ou le Pascal. Lingo est un dérivé ou dialecte du langage HyperTalk utilisé dans le logiciel auteur HyperCard distribué sur les MacIntosh à partir de 1986. Il a été prévu au départ pour être le plus lisible possible pour les anglophones.

  • set mavariable to 10
  • go to frame 20
  • set word 4 of montexte to "bonjour"

Sa syntaxe s'est peu à peu rapprochée de la norme objet (syntaxe à point).

Les scripts procéduraux

Utilisent uniquement des variables et fonctions globales. Leur utilisation doit rester limitée car les variables globales posent des problèmes au niveau de la ram.

On utilise autant que possible les script objets, les script procéduraux uniquement quand c'est nécessaire.

"movie script"

Ce sont les scripts utilisés pour le code procédural.

Ces scripts reçoivent quelques fonctions-événements prédéfinis qui correspondent à l'ouverture de l'application, sa fermeture, le rafraichissement d'image.

Evenements d'ouverture et clôture:

  • on prepareMovie s'exécute avant l'affichage de la première image. C'est là qu'on prépare le splash screen.
  • on startMovie s'exécute après l'affichage de la première image. C'est là qu'on initialise l'application.
  • on stopMovie s'exécute à la clôture de l'application, c'est là qu'on détruit son contenu.

Evenements de rafraichissement d'image:

  • on prepareFrame s'exécute avant le rendu de l'image, c'est ici qu'on met les relevés de temps.
  • on enterFrame s'exécute pendant le laps de temps restant avant le rendu de la prochaine image, c'est là qu'on met tous les calculs.
  • on exitFrame s'exécute juste avant le déplacement de la tête de lecture, c'est ici qu'on lui indique l'image qu'elle doit rendre (avec go to)

Evenement indépendant:

  • on idle s'exécute selon un intervalle multiple de 16 millisecondes (60 fps). C'est là qu'on met le code indépendant du frameRate de l'application.

Evenements souris:

  • on mouseDown et on mouseUp, appelés quand la souris est pressée ou relâchée.

Les scripts dits d'acteur

Ce sont des scripts qui se trouvent directement à l'intérieur d'un acteur. Leur type n'est pas défini mais ils fonctionnent comme les "movie script".

Ils reçoivent les évènements de souris et de rafraichissement lorsqu'une instance de l'acteur est visible.

Types de scripts

Il existe 4 types de scripts en Lingo, deux de type procédural, deux de type objet:

Implémentations

Le Lingo est un langage propriétaire, il n'en existe donc qu'une seule implémentation.

Commandes lingo et syntaxe javascript

Depuis sa version MX2004, le logiciel Director accepte l'usage de deux langages différents : le Lingo, et une implémentation de Javascript/ECMAScript qui exécute une grosse partie des opérations lingo.

Les scripts objet

Les scripts dits "parents"

Permettent de simuler des classes d'objet. La syntaxe des méthodes reste procédurale : il faut faire passer une référence à l'objet "me" en premier argument.

classe instanciable

un exemple de script parent instancié:
            -- propriétés            property pNombre             -- méthodes constructeur et destructeur            on new me, n , obj        pObject = obj        pNombre = n        return me      end            on delete me        pObject = void      end            -- méthodes utilisateur            on incremente me        pNombre = pNombre +1      end            

Si ce script se nomme "nombre", on l'instanciera par exemple de cette manière :

      monNouveauNombre = new(script "nombre", 10, obj)      

et on invoquera sa fonction "incremente" de cette manière :

      monNouveauNombre.incremente()      

classe statique

Un script parent peut servir de classe statique.

On accède à sa référence comme ceci:

      myStaticClass = Script("script_name")      

héritage

L'héritage en lingo ne fonctionne pas comme dans les langages objet classiques, il se base sur la propriété "ancestor" des script parents, qui correspond à une instance de la classe-mère. Il ne s'agit donc pas d'héritage mais d'une surcharge.

Director remonte automatiquement aux propriétés de l'objet ancestor depuis la référence fille ce qui permet de retrouver l'effet d'une classe héritée. Attention donc à la valeur de l'argument "me": il doit toujours correspondre à l'instance de dernière génération.

Cela ne marche pas pour toutes les propriétés et méthodes des classes natives de director (auquel cas il faut pointer l'ancestor).

Exemple de simulation d'une sous-classe de List
      property ancestor            on new ( me ) -- sous classe de l'objet list        ancestor = [1,10,20,30]        return me -- attention: on ne renvoie pas "ancestor" mais "me"      end      
      obj=new Script( "testClass" )      put obj[ 1 ] -- on retrouve les propriétés de l'ancestor      

Les scripts d'application ou "behaviors"

Ce sont des objets complexes dont le script n'est pas directement accessible. Ils contiennent de nombreux événements permettant d'interagir avec les sprites, la souris, le clavier, par exemple pour créer des boutons ou des éditeurs de texte.

Les scripts de comportement sont souvent développés pour être réutilisés par des graphistes ou intégrateurs. Par un simple drag and drop ces scripts se rattachent à des objets de la scène: image, sprite, acteur. Ces scripts ont des fonctions prédéfinies qui permettent de paramétrer manuellement les instances de même que les composants flash.

Page générée en 0.089 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise