Le noeud advancedTouch est un touchSensor plus sophistiqué. Sa
particularité est de pouvoir détecter les "simple clic"
et les "double clics"
Télécharger
advancedTouch { exposedField SFTime latence 0.3 eventOut SFBool sensB eventOut SFInt32 sensN # propriété commune avec un touchSensor standard... exposedField SFBool enabled TRUE eventOut SFVec3f hitNormal_changed eventOut SFVec3f hitPoint_changed eventOut SFVec2f hitTexCoord_changed eventOut SFBool isActive eventOut SFBool isOver }
C'est un dérivé du touchSensor standard. Il a donc une
majorité de propriétés communes. Il en possède
toutefois 3 nouvelles qui lui sont propres :
latence : exposedField de type SFTime, elle permet de régler
la "vitesse" du double clic. Par défaut; le temps maxi
entre 2 clics est de 0.3 seconde.
sensB : eventOut de type SFBool, renvoie un évènement
TRUE ou FALSE.
TRUE signifie un doube clic, FALSE un simple clic.
sensN : eventOut de typ SFInt32, renvoie un évènement
valant 1 ou -1.
1 signifie un double clic, -1 un simple clic.
Ce noeud ne renvois pas d'évènement explicite touchTime.
Mais ce touchTime est implicitement créé par les eventOut
sensB et sensN. Pour récupérer la valeur
du touchTime utilisez un script de ce genre :
DEF moncapteur advancedTouch{ } DEF monscript Script { eventIn SFBool touchB #ou bien... eventIn SFBool touchN eventOut SFTime touchtime url "javascript: function touchB(val,t){ touchtime = t ; } #ou bien... function touchN(val,t){ touchtime = t ; } " } ROUTE moncapteur.sensB TO monscript.touchB #ou bien... ROUTE moncapteur.sensN TO monscript.touchNQuel que soit le type de clic (simple ou double) détecté, la valeur du touchTime ainsi récupérée vaut en fait : temps du premier clic + latence.
ROUTE monscript.touchtime TO autrenoeud.propriété_SFTime
Ce proto est écrit en VRML97 en tenant compte de la norme de script
ECMA. A ce titre, il est théoriquement compatible avec tous les plugins
VRML respectant ces deux normes. Je l'ai testé avec succès sur les
plugins suivants :
BS
Contact 6.1 de Bitmanagement.
Contact
5.1 de Blaxxum.
Cosmo
Player 2.1 de Cosmo Software.
Cortona
VRML client 4.0 de ParallelGraphics.
Si vous l'utilisez avec un autre navigateur et qu'il ne fonctionne pas, merci de me contacter pour me le signaler.