戻る はじめに
VRMLを表示する前に実行させたい処理の記述について。
Internet Explorer などの Webブラウザーの JavaScript では、関数の外側に記述された命令はロード直後に実行されます。
この作例のソースの var col = blue;
がそれにあたりますが、VRMLのスクリプトでも同様とは限りません。
DEF Sc Script {
eventIn SFTime colorChange
eventOut SFColor ballColor
field SFColor col 0 1 0
field SFColor blue 0 0 1
url "javascript:
var col = blue;
function colorChange () {
ballColor = col;
}
"
}
- Cosmo の場合
- 赤い球をクリックすると、緑色に変わります。 関数の外の命令は実行されません。
- Cortona の場合
- 赤い玉をクリックすると、青色に変わります。 Webブラウザーと同様に関数の外の命令は最初に実行されます。
- Contact の場合
- ロード直後にエラーが表示され、赤い玉をクリックしても色は変わりません。 関数の外に命令を書いてはいけません。
このようにVRMLブラウザーにより実行結果が異なります。
どのブラウザーでも等しくエラーを出さずに動作させるには、命令を関数の外側に記述しないでください。
VRML の JavaScript で初期化時の処理は initialize
関数の中に記述してください。
この関数はロード直後に自動実行されます。
DEF Sc Script {
eventIn SFTime colorChange
eventOut SFColor ballColor
field SFColor col 0 1 0
field SFColor blue 0 0 1
url "javascript:
function initialize () {
var col = blue;
}
function colorChange () {
ballColor = col;
}
"
}
この作例を実行すると、Cosmo、Cortona、Contact ともに赤い玉をクリックすると緑色に変わります。
何れのブラウザーでもエラーは出ませんが青色には変わりません。
何故でしょう?
答えは次の 変数について をご覧ください。
VRML の JavaScript で使用できる自動実行関数
何れの関数も引数を持ちません。
initialize ()
関数
-
この関数が記述された Scriptノードがロードされた直後に、全てのイベントに先だって自動実行されます。
eventsProcessed ()
関数
-
eventIn によって実行された関数が修了した後に自動実行されます。
複数のイベント処理後に共通して行いたい処理を記述してください。
shutdown ()
関数
-
この関数が記述された Scriptノードが削除される場合や、この関数が記述されたVRMLがアンロードもしくは他のファイルと置き換わる場合に自動実行されます。
このページのトップ |
前へ 書式について |
次へ 変数について