
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