“編寫程式”的版本间的差异
Pegasusroe(讨论 | 贡献) 小 (→GGBScript) |
Pegasusroe(讨论 | 贡献) 小 (→JavaScript) |
||
第18行: | 第18行: | ||
==JavaScript== | ==JavaScript== | ||
− | JavaScript | + | JavaScript 是一種常用於網頁中的程式語言。不像 GGBScript 只能依序執行一些 GeoGebra 指令而己,JavaScript 可以使用 {{key|if|blue}}、{{key|while|blue}}、{{key|for|blue}} 等關鍵字來控制程式的流程。若想進一步瞭解 JavaScript 的語法,請參閱 [https://developer.mozilla.org/en/JavaScript/Guide developer.mozilla.org] 。我們也可以使用一些特別的 JavaScript 函數來作圖,這些函數都是 {{key|ggbApplet}} 的物件方法,也就是說我們必須使用: |
+ | |||
+ | <code>{{key|ggbApplet}}.method(a, b, ...)</code> | ||
+ | |||
+ | 這樣的語法來呼叫這些函數才行。詳細的函數說明,請參閱 [[:en:Reference:JavaScript|ggbApplet 物件方法]] 列表。 | ||
{{Example|1= | {{Example|1= | ||
− | < | + | <code> |
− | for(var i =0;i<10;i++) | + | for(var i =0;i<10;i++) {{key|ggbApplet}}.[[:en:Reference:JavaScript#Available_Methods|evalCommand]]("A_"+i+"=(random()*10,random()*10)"); |
− | + | </code> | |
− | </ | ||
− | + | 這段程式會畫出 10 個點:''A<sub>0</sub>'' 到 ''A<sub>9</sub>'' ,其座標均由亂數產生。 | |
}} | }} | ||
− | GeoGebra | + | GeoGebra 擁有自己的 JavaScript 編譯程式。當我們要將 GeoGebra [[ 匯出網頁]] 時,我們可以選擇要使用 GeoGebra 自己的編譯程式還是瀏覽器的編譯程式。如果你直接在 HTML 網頁碼中編輯 JavaScript 的話,記得要先執行:<code>{{key|ggbApplet}} = document.applets[0];</code> 否則 {{key|ggbApplet}} 物件無法自行啟動。 |
+ | |||
===Global JavaScript=== | ===Global JavaScript=== | ||
In the Global JavaScript part of Scripting tab in [[Properties Dialog]] you may define some functions or do some assignments that will be done before the construction is loaded. You can also define function ''ggbOnInit()'', which is called automatically once the construction is loaded. The ggbOnInit function can be used for registering some listeners, as shown below.{{example|1= | In the Global JavaScript part of Scripting tab in [[Properties Dialog]] you may define some functions or do some assignments that will be done before the construction is loaded. You can also define function ''ggbOnInit()'', which is called automatically once the construction is loaded. The ggbOnInit function can be used for registering some listeners, as shown below.{{example|1= |
2011年12月18日 (日) 10:25的版本
GeoGebra 支援兩種程式語言 - GGBScript 和 Javascript。我們可以在下列的事件中編寫相對的觸發程序:
- 用滑鼠點選某物件時 (On Click)
- 某物件數值或屬性變更時 (On Update, ...)
- 開啟 GeoGebra 檔案時 (ggbOnInit)
- Javascript 觸發程序 (listener),詳情請參考 JavaScript。
我們可以透過物件屬性視窗中的「程式」頁面來編寫程式碼。
GGBScript
GGBScript 主要是用 GeoGebra 本身的指令來編寫。
JavaScript
JavaScript 是一種常用於網頁中的程式語言。不像 GGBScript 只能依序執行一些 GeoGebra 指令而己,JavaScript 可以使用 if、while、for 等關鍵字來控制程式的流程。若想進一步瞭解 JavaScript 的語法,請參閱 developer.mozilla.org。我們也可以使用一些特別的 JavaScript 函數來作圖,這些函數都是 ggbApplet 的物件方法,也就是說我們必須使用:
ggbApplet.method(a, b, ...)
這樣的語法來呼叫這些函數才行。詳細的函數說明,請參閱 ggbApplet 物件方法列表。
for(var i =0;i<10;i++) ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");
GeoGebra 擁有自己的 JavaScript 編譯程式。當我們要將 GeoGebra 匯出網頁時,我們可以選擇要使用 GeoGebra 自己的編譯程式還是瀏覽器的編譯程式。如果你直接在 HTML 網頁碼中編輯 JavaScript 的話,記得要先執行:ggbApplet = document.applets[0];
否則 ggbApplet 物件無法自行啟動。
Global JavaScript
In the Global JavaScript part of Scripting tab in Properties Dialog you may define some functions or do some assignments that will be done before the construction is loaded. You can also define function ggbOnInit(), which is called automatically once the construction is loaded. The ggbOnInit function can be used for registering some listeners, as shown below.
function onAdd(name){ alert("Object "+name+" was added."); } function ggbOnInit(){ ggbApplet.registerAddListener("onAdd"); }First we defined function onAdd that given a string shows a message depending on that string. After that, using the ggbOnInit function, we told GeoGebra to call this function whenever a new object is added. Once we reload our construction, function ggbOnInit will be called and since then, when user adds a point named e.g. A, message "Object A was added" will appear.
You can also use listeners for actions like rename, delete and clear construction. Complete list is available in Reference:JavaScript.
USB Data Logging (From GeoGebra 4.2)
For logging data from some Vernier USB Data Loggers, eg Go!Motion and Go!Temp one can define a logger listener using the registerLoggerListener method. Such listener can look like this:
function logger(value) { var d = value * 1; ggbApplet.evalCommand("(CopyFreeObject[a],"+d+")"); ggbApplet.evalCommand("SetValue[a,a+1]"); }
This script assumes that there is a free number a in the construction. Each time number d is logged, point (a,d) is constructed and a is increased.