Skrypty

Skrypt to sekwencja poleceń wykonywanych jedno po drugim.

GeoGebra obsługuje dwa języki skryptowe - GGBScript i Javascript. Skrypty możesz wprowadzać w zakładce Skrypty Menu-options.svg okna Ustawienia obiektu, dla którego chcesz przypisać skrypt.

Okno Ustawienia musi być zamknięte, aby skrypty działały.

Różne obiekty obsługują różne typy skryptów; uruchamianie skryptów może być wywołane przez:

  • kliknięcie określonego obiektu (zakładka Przy kliknięciu)

  • aktualizację obiektu (gdy zmienia się jego wartość lub właściwości) (zakładka Po zmianie)

  • zmianę zawartości pola wprowadzania (zakładka Przy zmianie)

  • zwolnienie przycisku myszy (lub oderwanie palca od ekranu na urządzeniu dotykowym) po przeciągnięciu obiektu (zakładka Po przesunięciu)

  • wczytanie pliku (dla JavaScript - zakładka Globalnie Javascript)

  • rejestratory zdarzeń Javascript (patrz Specyfikacja API (ang.))

Różnica między skryptami Po zmianie i Przy zmianie w przypadku pola wprowadzania polega na tym, że jeśli skrypt jest wpisany w zakładce Po zmianie, to wykonuje się dopiero po utracie fokusu przez pole (np. po kliknięciu przycisku, w Widoku Grafiki itp.), natomiast skrypt w zakładce Przy zmianie uruchamiany jest natychmiast po każdej zmianie zawartości pola, nawet gdy nadal masz w nim fokus.

GGBScript

Możesz tworzyć skrypty składające się z poleceń GeoGebry, tak jak w polu wprowadzania. Po wywołaniu skryptu każde polecenie wykonywane jest kolejno w tej samej kolejności, w jakiej zostało zapisane.

  • a jest suwakiem o wartościach całkowitych od 1 do 3 (Krok jest równy 1)

  • Wpisz: l1 = {"red", "green", "blue"}

  • w Ustawieniach a, ustaw skrypt "Po zmianie" UstawKolor(a, Element(l1, a))

  • teraz, przesuwając suwak, zmieniasz jego kolor.

Wyjaśnienie: Za każdym razem, gdy przesuwasz suwak, następuje jego aktualizacja. Wtedy skrypt jest wywoływany, a wartość a wybiera kolor z listy i przypisuje go suwakowi.

Możesz użyć znaku #, aby rozpocząć w skrypcie komentarz

Note Wskazówka: Niektóre polecenia są dostępne tylko dla skryptów. Ich lista znajduje się na stronie Skrypty Polecenia.

JavaScript

JavaScript to język programowania wykorzystywany przez wiele technologii internetowych. W przeciwieństwie do GGBScript, w JavaScript nie musisz wykonywać poleceń tylko w prostej sekwencji – możesz używać struktur sterujących (if, while, for). Ogólny kurs JavaScript znajdziesz na stronie developer.mozilla.org. W GeoGebrze możesz używać specjalnych metod JavaScript pozwalających na modyfikowanie konstrukcji. Metody te należą do obiektu ggbApplet, co oznacza, że wywołujesz je w formie: ggbApplet.method_name(parameter,..,parameter).Pełna lista metod jest dostępna w Specyfikacji API (ang.).

for(var i =0;i<10;i++)
   ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");

Skrypt tworzy 10 punktów od A0 do A9 o losowych współrzędnych.

Skrypty w JavaScript są bardzo wszechstronne, ale wiele zadań można wykonać prostszym GGBScript.

Globalnie JavaScript

W części Globalnie JavaScript zakłądki Skrypty w Menu-options.svg oknie Ustawienia możesz definiować funkcje (ale nie zmienne), które będą dostępne w innych skryptach. Możesz także zdefiniować funkcję ggbOnInit(name, api), która uruchamia się automatycznie po wczytaniu konstrukcji. Funkcja ggbOnInit może być użyta np. do tworzenia rejestratorów zdarzeń, jak w przykładzie:

function onAdd(name){
    alert("Został dodany obiekt o nazwie "+name+".");
}

function ggbOnInit(name, api){
    api.registerAddListener("onAdd");
}

Najpierw zdefiniowaliśmy funkcję onAdd tóra dla podanego ciągu znaków wyświetla komunikat zależny od tej wartości. Następnie, za pomocą funkcji ggbOnInit, poleciliśmy GeoGebrze wywoływać tę funkcję przy dodaniu nowego obiektu. Po ponownym załadowaniu konstrukcji, gdy użytkownik doda np. punkt A, , pojawi się komunikat: "Został dodany obiekt o nazwie A.".

Możesz także korzystać z rejestratorów zdarzeń podczas zmiany nazwy, usuwania czy czyszczenia konstrukcji. Pełna lista dostępna jest w Specyfikacji API (ang.).

Używanie metod ggbApplet w Globalnie JavaScript poza funkcją ggbOnInit nie będzie działać poprawnie, ponieważ są one wywoływane przed załadowaniem konstrukcji.