GeoGebraにおけるスクリプト
スクリプトは、コマンドの連続で、順番に実行されるものです。
GeoGebraはGGBスクリプトとJavaスクリプトという2つのスクリプト言語をサポートしています。スクリプトは、スクリプトを割り当てたいオブジェクトの 設定のダイアログのスクリプト記述タブで入力します。
注意:スクリプトを実行するには、設定 パネルを閉じる必要があります。
オブジェクトによってサポートするスクリプトの種類は異なり、スクリプトの実行は次のような方法で実行することができます:
- 特定のオブジェクトをクリックする (クリックしてタブ)
- オブジェクトの値やプロパティが変更された場合、特定のオブジェクトを更新する(最新情報タブ)
- 入力ボックスの内容が変更されたとき(変更時 タブ)
- オブジェクトをドラッグした後、マウスボタンを離したとき(タッチデバイスの場合は画面から指を離したとき)(On Drag-endタブ)
- ファイルの読み込み(JavaScriptの場合 - グローバルJavaスクリプト タブ)
- Javaスクリプトのリスナー(「資料:Javaスクリプト」参照)
- 入力ボックスのOnChangeとOnUpdateスクリプトのデモを確認してください。
- ドラッグ可能なポイントに対するOnDrag-endスクリプトのデモを確認してください。
GGBスクリプト
入力バーで使っているようなGeoGebraコマンドで構成されたスクリプトを作成することができます。スクリプトを実行すると、すべてのコマンドが、書かれた順番通りに、連続的に実行されます。
例:
- は から (増分は ) の整数値のスライダー
list1 = {"red", "green", "blue"} を入力します。
- のプロパティで, "変更時" のスクリプトに
SetColor(a, Element(list1, a)) と設定します。
- スライダーを動かすと,スライダーの色が変わります。
Javaスクリプト
Javaスクリプトは、多くのインターネット技術で使用されているプログラミング言語です。GeoGebra スクリプトとは異なり、Javaスクリプトではコマンドを単純なシーケンスとして実行する必要はなく、制御フロー(if, while, for)を使用することができます。一般的なJavaスクリプトについては、developer.mozilla.orgでわかりやすいチュートリアルを見ることができます。GeoGebraでは、アプレットを変更することができる特別なJavaスクリプトメソッドを使用することができます。これらのメソッドはggbAppletオブジェクトに属しており、ggbApplet. メソッド名(パラメータ,...,パラメータ)としてそれらを呼び出すことが可能です。これらのメソッドの完全なリストについては、リファレンス:Javaスクリプト(英語)を参照してください。
例:
このスクリプトはランダムな座標の点を10個 〜 を作成します。
注:Javaスクリプトによるスクリプトは非常に多機能ですが、よりシンプルなGeoGebraスクリプトを使用しても多くのタスクが実現できます。
for(var i =0;i<10;i++)
ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");
グローバルJavaスクリプト
プロパティダイアログのスクリプト記述タブにあるグローバルJavaスクリプトでは、他のスクリプトから利用可能な関数(変数ではない)を定義することができます。また、ggbOnInit(name, api)という関数を定義することができ、これはアプレットが読み込まれるとと自動的に呼び出されます。ggbOnInit関数は、以下のように、いくつかのリスナーを設定するために使うことができます。
例:
function onAdd(name){
alert("オブジェクト "+name+" が追加されました.");
}
function ggbOnInit(name, api){
api.registerAddListener("onAdd");
}
最初に関数 onAdd を定義し、与えられた文字列によってメッセージを表示するようにしました。その後、ggbOnInit 関数を使って、新しいオブジェクトが追加されるたびにこの関数を呼び出すように GeoGebra に指示しました。一度アプレットをリロードすると、ggbOnInit関数が呼び出され、それ以来、ユーザーが例えば A というポイントを追加すると、「オブジェクトAが追加されました.」というメッセージが表示されます。
また、リスナーを使用して、アプレットの名前の変更、削除、クリアなどのアクションを行うことができます。詳しいリストはReference:JavaScript(英語)に掲載されています。
注意: ggbOnInit以外のグローバルJavaスクリプトでggbAppletのメソッドを使用すると、アプレットがロードされる前に呼び出されるため、意図したとおりに動作しないでしょう。