上級者向け:
スクリプトを自分で記述する

このページでは、テキスト・エディタを使ってスクリプトを直接入力する方法についてのガイドラインを示します。VRML 構文の詳細については、http://vrml.sgi.com の VRML 2.0 仕様を参照してください。

フィールドとイベントの宣言

フィールドとイベントは、スクリプト・テンプレートの FIELDS 行の後、BEHAVIOR 行の前に記述します。構文は、次のとおりです。

interface_type   field_type   name

例を示します。

eventIn  SFBool     lightOn
eventOut SFRotation myRotat
field    SFColor    myColor   1 1 1

この例に示されるように、フィールドは最初の値を指定する必要があります。フィールドの構文は、VRML 2.0 仕様で説明されるファイル形式の構文と同じです。

関数

イベントに何かを実行させたい場合は、BEHAVIOR 行の後に続けて、eventIn のそれぞれに関数を追加します。関数の形式は、次の通りです。

function eventIn_name( value, time )
{
  // 関数本体 //
}

関数には、1 つか 2 つの引数を与えることができます。引数が 1 つの値しか持たない場合、この値は value であるとみなされます。

これらの関数は、次のような一般的な構文を持つほかの関数を呼び出すことができます。

function function_name( arg1, arg2, ... )
{
  // 関数本体 //
}

initialize() 関数

initialize() 関数は、ワールドがロードされてイベントが処理される前に一度呼び出されます。この関数を使うと、field の値と eventOut の値を設定できます。この関数はパラメータをとりません。この関数から生成されたイベントは、Script ノードを含んでいるワールドがロードされたときに、タイムスタンプが設定されます。

shutdown() 関数

shutdown() 関数は、ワールドがアンロードされるときに呼び出されます。この関数を使うと、メモリの割当が解除され、必要なクリア処理が実行されます。この関数はパラメータをとりません。この関数から生成されたイベントは、Script ノードを含んでいるワールドがアンロードされたときに、タイムスタンプが設定されます。

eventsProcessed() 関数

イベント群を受け取った後に呼び出される eventsProcessed() 関数を定義できます。この関数が呼び出されるタイミングはブラウザによって異なり、それぞれの eventIn 関数から戻る後に呼び出される場合もあれば、複数の eventIn 関数が処理された後で呼び出される場合もあります。この関数はパラメータをとりません。この関数から生成されたイベントには、最後に処理されたイベントのタイムスタンプが設定されます。

ここをクリックすると、サンプル・スクリプトが表示されます。

参照 :