Script {
eventIn 型 イベントイン名
eventOut 型 イベントアウト名
field 型 フィールド名 初期値
mustEvaluate FALSE
directOutput FALSE
url "javascript:
function イベントイン名 (イベント値, イベント時刻) {
イベントアウト名 = 計算結果;
}
"
}
exposedField 型 フィールド名 初期値
"
) で囲んで記述します。javascript:
を全て半角小文字で記述してください。script1.js
であるならば、url "
script1.js"
のように記述します。
url [ "
script1.js"
"
script2.js"
]
のように複数のパスを記述した場合、最初のパスが見つからなければ2番目のパスに書かれたファイルが読み込まれます。'
) で囲ってください。;
) を付けるようにしてください。 さもないとエラーになります。
#
記号で始まりますが、JavaScript の場合 //
で始まります。 複数行にまたがったコメントは /*
と */
の間に記述します。
<Script mustEvaluate='FALSE' directOutput='FALSE' url=''>
<field accessType='inputOnly' type='型' name='イベントイン名'/>
<field accessType='outputOnly' type='型' name='イベントアウト名'/>
<field accessType='initializeOnly' type='型' name='フィールド名' value='初期値'/>
<field accessType='inputOutput' type='型' name='フィールド名' value='初期値'/>
<![CDATA[ecmascript:
function イベントイン名 (イベント値, イベント時刻) {
イベントアウト名 = 計算結果;
}
]]>
</Script>
accessType='inputOutput'
とすれば定義できます。機能 | VRML2.0 | X3D | 初期値 |
---|---|---|---|
イベント入力 | eventIn | inputOnly | 不要 |
イベント出力 | eventOut | outputOnly | 不要 |
入出力不可 | field | initializeOnly | 必要 |
入出力可 | exposedField | inputOutput | 必要 |
<![CDATA[
と ]]>
の間に記述してください。
#VRML V2.0 utf8
Viewpoint {}
NavigationInfo {
type "EXAMINE"
}
Group {
children [
Shape {
appearance Appearance {
# (8)
material DEF Ball-Mt Material {
diffuseColor 1 0 0
}
}
geometry Sphere {}
}
# (1)
DEF ThS TouchSensor {}
]
}
DEF Sc Script {
# (3)
eventIn SFTime colorChange
# (6)
eventOut SFColor diffuseColorOfBall
url "javascript:
// (4)
function colorChange () {
var r = Math.random();
var g = Math.random();
var b = Math.random();
// (5)
diffuseColorOfBall = new SFColor (r,g,b);
}
"
}
# (2)
ROUTE ThS.touchTime TO Sc.colorChange
# (7)
ROUTE Sc.diffuseColorOfBall TO Ball-Mt.diffuseColor
DEF Sc Script {
eventIn SFTime colorChange
field SFNode BallMt USE Ball-Mt
directOutput TRUE
url "javascript:
function colorChange () {
var r = Math.random();
var g = Math.random();
var b = Math.random();
BallMt.diffuseColor = new SFColor (r,g,b);
}
"
}
.
) で区切って記述すると、そのノードのフィールド値に直接書き込めます。c = BallMt.diffuseColor;
function eventInName ( value, eventTime ) { }
DEF Sc Script {
eventIn SFBool isActive_ThS
eventOut SFTime startTime
eventOut SFTime stopTime
url "javascript:
function isActive_ThS (val,et) {
if (val == TRUE) startTime = et;
else stopTime = et;
}
"
}
stopTime = et;
stopTime = et + 2;