XML  »  Guide  »  Guida VRML 

Un semplice esempio di implementazione di Java in VRML



(Seconda parte: i codici)

Sorgente completo del file VRML

#VRML V2.0 utf8
# esempio di implementazione di Java
Viewpoint {
position 0 0 10
}
Background {skyColor [0 0 0] groundColor
[ 0 0 0 ] }
NavigationInfo {
type [ "NONE" ]
}
transform {
translation -4.8 -1 -1
children[
Shape {
appearance Appearance {
material Material { diffuseColor 1 1 1 }
}
geometry Text
{ string "Rosso"
fontStyle fontStyle {size 1.5}
}
}
DEF sensore_rosso TouchSensor {}
]
}
transform {
translation -1 -1 -1
children[
Shape {
appearance Appearance {
material Material { diffuseColor 1 1 1 }
}
geometry Text
{ string "Verde"
fontStyle fontStyle {size 1.5}
}
}
DEF sensore_verde TouchSensor {}
]
}
transform {
translation 3 -1 -1
children[
Shape {
appearance Appearance {
material Material { diffuseColor 1 1 1 }
}
geometry Text
{ string "Blu"
fontStyle fontStyle {size 1.5}
}
}
DEF sensore_blu TouchSensor {}
]
}
# definizione del nodo cono
# e creazione al suo interno del nuovo
nodo conoMaterial
# il quale gestisce il colore del cono

DEF cono transform {
translation 0 2 -2
children [
Shape {
appearance Appearance {
material DEF conoMaterial Material { diffuseColor 0.75 0.75
0.75}
}
geometry Cone { bottomRadius 1.5
height 3}
}
]
}
# definizione del nodo script e dichiarazione
dei suoi campi
DEF cambio_colore Script {
directOutput trUE
field SFNode coloreMaterial USE conoMaterial
eventIn SFTime set_rosso
eventIn SFTime set_verde
eventIn SFTime set_blu
url "RGB.class"
}
ROUTE sensore_rosso.touchTime TO cambio_colore.set_rosso
ROUTE sensore_verde.touchTime TO cambio_colore.set_verde
ROUTE sensore_blu.touchTime TO cambio_colore.set_blu

Codice completo del sorgente Java
Ricordiamo che il presente codice costituisce il file RGB.java che dovrà essere opportunamente compilato.

import vrml.*;
import vrml.field.*;
import vrml.node.*;
public class RGB extends Script {

public void processEvent(Event e) {
if(e.getName().equals("set_rosso")) {
SFNode coloreMaterial = (SFNode) getField("coloreMaterial");
Node coloreMaterialNode = (Node) coloreMaterial.getValue();
SFColor coloreColor = (SFColor)
coloreMaterialNode.getExposedField("diffuseColor");
coloreColor.setValue(new SFColor(1,0,0));
}
else if(e.getName().equals("set_verde")) {
SFNode coloreMaterial = (SFNode) getField("coloreMaterial");
Node coloreMaterialNode = (Node) coloreMaterial.getValue();
SFColor coloreColor = (SFColor)
coloreMaterialNode.getExposedField("diffuseColor");
coloreColor.setValue(new SFColor(0,1,0));
}
else if(e.getName().equals("set_blu")) {
SFNode coloreMaterial = (SFNode) getField("coloreMaterial");
Node coloreMaterialNode = (Node) coloreMaterial.getValue();
SFColor coloreColor = (SFColor)
coloreMaterialNode.getExposedField("diffuseColor");
coloreColor.setValue(new SFColor(0,0,1));
}
}
}

Ultimi articoli XML

Open Graph Protocol, Facebook e il Web Semantico

Come sfruttare il Web Semantico "made in Facebook"

Introduzione a RDFa - 2

Arricchire un documento HTML con metadati semantici presi dal...

Introduzione a RDFa

Cos'è e a cosa serve il linguaggio che potrebbe aprire il campo alle...

Usare SVG per creare sfondi flessibili, scalabili e divertenti

Scopriamo cos'è il formato SVG e come possiamo usarlo in modo...

Visualizzare i metadati RDF Dublin core con le trasformazioni XSL

Mettere insieme XSL, XPATH e le definizioni Dublin core per...

Altri articoli

Guide XML

Guida Podcasting

Un percorso in 16 lezioni, per entrare nella filosofia del podcast...

Guida Smil 2.0

Un percorso pratico alla scoperta di SMIL: il linguaggio (XML) per...

Guida Web service

Cosa sono, a cosa servono e come si creano servizi Web, i sistemi...

Altre guide

Newsletter @XML

Ogni mese, direttamente nella tua e-mail: articoli, guide, FAQ e approfondimenti sui linguaggi della famiglia XML.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Nessun corso previsto

Nessun corso previsto