Sommaire Page precedente Page suivante page 19


Javascript et vrml

Ce chapitre decrit l'utilisation du javascript a travers le noeud Script mais ne fourni pas de precisions sur le javascript.

Le noeud Script

Il sert d'interface entre le vrml et javascript.Ce script est celui du viewer.
viewer.wrl Code source
    DEF select Script {                      #nom du script
        field SFNode coord USE plaque        #noeud utilise directement par le script
        directOutput TRUE                    #changement automatique 
        field MFString tableau1 ["Cube",...  #variables utilisees dans le scipt
        field MFVec3f tableau2 [1 1 1,...
        eventIn SFTime temps                 #evenements fournis au script
        eventIn SFVec2f audessus 
        eventOut SFVec3f echelle             #resultats fournis par le script
        eventOut SFInt32 choix
        eventOut MFString mot
        url [
            "javascript:
                function temps () {          #une fonction par eventIn   
                    choix=Math.floor(coord.hitTexCoord_changed[0]*10);
                    echelle=tableau2[choix];
                }
                function audessus(val) {   #la valeur de audessus est utilisee dans val  
                    mot[0]=tableau1[Math.floor(val[0]*10)];
                }
            "
        ]
    }

    ROUTE plaque.hitTexCoord_changed  TO  select.audessus
    ROUTE select.mot  TO ecran.set_string

    ROUTE plaque.touchTime  TO  select.temps
    ROUTE select.echelle  TO objet.set_scale
    ROUTE select.choix   TO  affiche.set_whichChoice
field designe une variable utilisee dans le script.Il est suivit du type de la variable, de son nom et de sa valeur d'initialisation.
    field SFType nom valeur
Il peut egalement utiliser directement les valeurs des noeuds.Dans ce cas il est suivit du nom de la variable,suivit par USE et le nom du noeud.Il sera utilise dans le script sous la forme nom.field_changed
 
    field SFNode nom USE nom du noeud
directOutput change directement la valeur dans le noeud utilise par field.La valeur sera attribuee sous la forme nom.set_champ=valeur
    directOutput TRUE
eventIn donne le nom des evenements fournis au script.Il doit y avoir une fonction par eventIn.La valeur de l'evenement peut etre utilisee ou non.Il est suivit du type de l'evenement et de son nom.
    eventIn SFType nom
eventOut donne le type et le nom des evenemts fournis par le script.Il peut y avoir plusieurs eventOut pour la meme fonction.
    eventOut SFtype nom
url il designe l'adresse du script.Il peut prendre deux formes:Si le script n'est pas dans le programme il s'ecrit:
    url [
        "http://www.truc.fr/script.js"
    ]
sinon il doit contenir au minimum:
    url [
        "javascript:  function nom() {...}"
    ]
function contient le code du script.Il peut transmettre deux valeurs: la valeur de l'eventIn et un temps de type SFTime.La valeur de l'eventIn ne peut etre utilisee qu'a travers le nom_variable.
    function nom_eventIn (nom_variable, temps) {
        ...
    }
ROUTE est utilise de la meme facon que pour les autres noeuds.Il prend la forme :
    ROUTE noeud.field     TO     nom_script.nom_eventIn     #pour l'entree
    ROUTE nom_script.nom_eventOut  TO  noeud.set_field      #pour la sortie