pauseLoop_1.wrl source
#VRML V2.0 utf8

Viewpoint {}
NavigationInfo {
type "EXAMINE"
}

# 赤円錐
DEF Cone-Tf Transform {
children [
Transform {
translation 3 0 0
children [
Shape {
appearance Appearance {
material Material {
diffuseColor 1 0 0
}
}
geometry Cone {
height 0.5
bottomRadius 0.2
}
}
]
}
]
}

# 一時停止ボタン
Group {
children [
Transform {
translation 0.2 0 0
children [
DEF Pause-Sp Shape {
appearance Appearance {
material Material {
diffuseColor 0 0.2 0.8
}
}
geometry Box {
size 0.2 0.7 0.05
}
}
]
}
Transform {
translation -0.2 0 0
children [
USE Pause-Sp
]
}
DEF Pause-ThS TouchSensor {}
]
}

# タイムセンサー
DEF TiS TimeSensor {
loop TRUE
cycleInterval 5
}

# 回転アニメ
DEF OI OrientationInterpolator {
key [ 0.0 0.25 0.5 0.75 1.0 ]
keyValue [
0 0 1 0
0 0 1 1.5708
0 0 1 3.1416
0 0 1 4.7124
0 0 1 6.2832
]
}

# 一時停止スクリプト
DEF Sc Script {
eventIn SFTime pause
eventIn SFFloat set_fraction
eventOut SFFloat fraction_out
field SFBool active TRUE
field SFFloat oldF 0
url "javascript:

function pause () {

active = !active;

}

function set_fraction (f) {

var df = f - oldF;
if ( df < 0 ) df++;
oldF = f;

if (active) {

fraction_out += df;
if ( fraction_out > 1 ) fraction_out--;

}

}

"
}

ROUTE Pause-ThS.touchTime TO Sc.pause

ROUTE TiS.fraction_changed TO Sc.set_fraction
ROUTE Sc.fraction_out TO OI.set_fraction
ROUTE OI.value_changed TO Cone-Tf.rotation