VRML with JavaScript Tutorial

戻る はじめに

初期化について

VRMLを表示する前に実行させたい処理の記述について。

関数の外の記述

Internet Explorer などの Webブラウザーの JavaScript では、関数の外側に記述された命令はロード直後に実行されます。  この作例のソースの var col = blue; がそれにあたりますが、VRMLのスクリプトでも同様とは限りません。
VRML - ソース / X3D - ソース
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ブラウザーにより実行結果が異なります。  どのブラウザーでも等しくエラーを出さずに動作させるには、命令を関数の外側に記述しないでください。

initialize 関数

VRML の JavaScript で初期化時の処理は initialize 関数の中に記述してください。  この関数はロード直後に自動実行されます。
VRML - ソース / X3D - ソース
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;
}

"
}
この作例を実行すると、CosmoCortonaContact ともに赤い玉をクリックすると緑色に変わります。  何れのブラウザーでもエラーは出ませんが青色には変わりません。  何故でしょう? 答えは次の 変数について をご覧ください。
VRML の JavaScript で使用できる自動実行関数
何れの関数も引数を持ちません。
initialize () 関数
この関数が記述された Scriptノードがロードされた直後に、全てのイベントに先だって自動実行されます。
eventsProcessed () 関数
eventIn によって実行された関数が修了した後に自動実行されます。  複数のイベント処理後に共通して行いたい処理を記述してください。
shutdown () 関数
この関数が記述された Scriptノードが削除される場合や、この関数が記述されたVRMLがアンロードもしくは他のファイルと置き換わる場合に自動実行されます。 

このページのトップ | 前へ 書式について | 次へ 変数について