On Update スクリプト内で「オブジェクト更新前の値」を参照する方法
設例
数値オブジェクトnを作成する。最小値1、最大値10、増分1に設定して、スライダーを作成する。
ブランクのテキストオブジェクトtext1 = ""を作成する。
いま、nのスライダーを動かす直前のnの値が、n_{previous}であったとする。そして、nのスライダーを動かした結果、nの値がn_{current}に更新されたとする。
当該更新を監視して、text1の値を以下のように設定する、nのOn Update スクリプトを作成しなさい。
"nの更新前の値は、n_{previous}でした。nの更新後の値は、n_{current}です。"
※ n_{previous}、n_{current}には、その時の具体的な数字(1,2,...,10)が入るようにせよ。
方法1
数値オブジェクトpreviousを、以下の定義で作成する。
previous = n
そして、nのOn Update スクリプトに、以下を記述する。
SetValue[text1,"nの更新前の値は、"+previous+"でした。nの更新後の値は、"+n+"です。"]
(解説)
nに従属するオブジェクト(ここではprevious)を、nのOn Update スクリプト内で参照する場合には、当該従属オブジェクトの値は、更新前のnの値に基づいて計算された値が採用される*1。この方法は、この仕様を利用したものである。
方法2
グローバルJavaスクリプトとして、以下のスクリプトを記述する。
そして、nのOn Update スクリプトに、以下のJavaScriptを記述する。
(解説)
関数updateText内で、setTextValue メソッドを、古い値のnPreviousを用いて実行する。それから、nPreviousを最新の値に更新する。この順序がポイントである。