ビュワーがレイアウトをロードした直後にすべてのスクリプトは、一度実行されます。この処理は、スクリプトの先頭からBeginFuncがあらわれるまでのコードを実行します。
//スクリプトの開始
グローバル変数の宣言
初期化コードなど
//最初のBeginFuncが出現するまで実行
BeginFunc aaa
EndFunc
スクリプトの先頭には、初期化コードを記述してください。主にグローバル変数の宣言や、その変数の初期値設定、部品の初期状態の設定などを行います。
スクリプトは次の順序で初期化されます。
- レイアウトに設定されたスクリプト
- レイアウト以外のスクリプト
レイアウト以外のスクリプトが実行される順番は不定です。
レイアウトスクリプト以外への外部参照(callや、別部品の変数を操作するなど)は、初期化の段階では使用できません。動作が不定になります。レイアウトスクリプトは最初に必ず実行されるので、このスクリプトにレイアウト全体で使うグローバル変数を定義すると便利です。
初期化コードで実行できない外部参照の例(説明用の模擬コードです)
POINT200は、POINT100のTESTメソッドをcallしますが、POINT100が先に実行される保証はないため、TEST内のDrawVarが正しい結果(100を表示する)を表示できない場合があります。初期化の実行順序に依存しないコードに書き換えてください。(一定時間後に発生するイベントを使って、そこからcallするなど)
//部品"POINT100"のコード
Var a
set a, 100
BeginFunc TEST
DrawVar a
EndFunc
//部品"POINT200"のコード
call "POINT100", TEST