アニメーション再生状態で起動する際の挙動について
実験内容
①数値オブジェクトtを用意する。
②tの値の範囲は0〜100とし、増分0.1、速度0.1、アニメーションは「増加(1回)」とする(下図参照)。
③t=0の状態でアニメーションを開始し、そのままコンピュータに保存する。このときのtの値を記録する。
④-1 保存したggbファイルをgeogebra.orgにアップロードする。アップロードの過程では、下図のように「要素を追加」か「保存して閉じる」かを選ぶ段階がある。
保存して閉じるを選択すると、下図の画面が現れるので、ここでは「結構です」を選択し、このときのtの値を記録する。
④-2 ④-1のアップロード画面で、アプレットの編集ボタン(下図のペンのボタン)を押して、編集画面に入ったのち、「完了」ボタンを押す。このときのtの値を記録する。さらに、保存して閉じるを選択し、「結構です」を選択する。このときのtの値を記録する。
⑤ アップロードしたアプレットをうしブログに埋め込み、tがいくつから動き始めるかを確認する。
結果
tの値の記録
④-1を採用した場合
ローカル保存時:t=6.4
結構ですボタン時:t=33.0
埋め込み
t=6.4から動き始めている。
④-2を採用した場合
ローカル保存時:t=6.4
完了ボタン時:t=23.0
結構ですボタン時:t=33.0
埋め込み
t=23.0から動き始めている。
※どちらのアプレットも、名前を変更しても開始値に影響はなかった。
検討
・アップロード画面でアプレットの編集を行わない場合は、埋め込みアプレットのtの開始値は、ローカル保存時のtの値である。
・アップロード画面でアプレットの編集を行った場合は、埋め込みアプレットのtの開始値は、「完了」ボタンを押した時のtの値である。
・アップロード後、アプレットの編集ボタン(上記のペンのボタン)を押した場合は、その後完了ボタンを押した時のtの値に開始値が更新される。
開始値をなるべくt=0に近づけたいときは、編集ボタンを押してスライダーを操作して、ただちに完了ボタンを押せば良い。
厳密にt=0から開始することはできないだろうか。以下でその方法を考える。
アニメーションを開始するための時限装置をつける
以下のように数値オブジェクトtriggerをつくる。
triggerのOn Update スクリプト
If[trigger==5,StartAnimation[t,true]]
button1をつくり、On Clickスクリプトを以下のように記述する。
StartAnimation[t,false]
SetValue[t,0]
SetValue[trigger,0]
StartAnimation[trigger,true]
※ここではあえて、button1のクリック後にもbutton1は消えない設定にした。
以上のようにすれば、button1を押すとt=0、停止状態になり、triggerが0〜10のカウントアップを始める。そしてtrigger=5、すなわちボタンを押してから5秒経過したら、tのアニメーションが開始する。
trigger=0, t=0, 停止状態でアップロードし、オンラインの編集画面でbutton1を押し、5秒以内に完了ボタンを押せば、埋め込みアプレットは読み込み後数秒のインターバルを経て、t=0からアニメーションが開始するはずである。
結果
アプレット読み込み時にスクリプトを実行する方法はないのか
埋め込みアプレットをユーザーが読み込んだときにStartAnimation[t, true]を実行する方法はないのだろうか。
tのOn Updateスクリプトに、
If[t==0,StartAnimation[t,true]]
を記述して、t=0の状態でアップロードしても、読み込み時にアニメーションは開始しなかった。
今後の課題としたい。