Scripting in GeoGebra
Een script is een reeks van commando's die een na een na elkaar worden uitgevoerd worden.
GeoGebra ondersteunt twee scripting talen- GGBScript en Javascript. Scripts kan je typen in de tab Scripting van de Instellingen van het object waaraan je een script wil toekennen.
Opmerking: Het script werkt slechts na het sluiten van het venster Instellingen. Dit laat je toe rustig te typen zonder dat er tegelijk een hoop dingen gebeuren in je constructie.
Verschillende objecttypes ondersteunen verschillende types vab scripting. De uitvoering van een script kan gestart worden:
- door te klikken op een specifiek object (tab Bij klikken)
- bij update van een specifiek object, wanneer de waarde of een eigenschap van het object gewijzigd word (tab Bij update)
- door de inhoud van een invulvak te wijzigen (tab Bij wijzigen)
- bij het loslaten van de muisknop (of het verwijderen van je vinger van het scherm bij touch screen schermen) na het verslepen van een object (tab Bij verslepen beëindigd)
- bij het laden van een bestand (tab Global Javascript voor JavaScript)
- Javascript listeners (zie Reference:JavaScript)
- Zie ook de demo van Bij wijzigen en Bij update scripts voor een invulvak.
- Zie ook de the demo van Bij verslepen beëindigd scripting voor een versleepbaar punt.
GGBScript
Je kunt scripts creëren die bestaan uit GeoGebra commando's, op dezelfde manier als je ze zou gebruiken in het invoerveld. Na het triggeren van het script wordt elk commando uitgevoerd in dezelfde volgorde als waarin je ze in het script typte.
Voorbeeld:
- is schruifknop voor een geheel getal van tot (met toename )
- typ als invoer:
lijst1 = {"red", "green", "blue"}
- Typ in de Instellingen van in de tab "Bij update" een script om de kleur te bepalen:
SetColor(a, Element(lijst1, a))
- Bij het verslepen van de schuifknop zal de kleur veranderen.
JavaScript
JavaScript is programmeertaal die in vele internet technologieën gebruikt wordt. In tegenstelling tot GeoGebra Script hoeven commando's in Javascript niet in een simpele volgorde uitgevoerd worden en kan je bv. ook een control flow ( Dit scripot creëert 10 punten to met random coördinaten.
Opmerking: Scripting met JavaScript is erg veelzijdig, maar heel wat taken kan je ook realiseren met het eenvoudigere GeoGebraScript.
if
, while
, for
) gebruikend. Voor generic JavaScript vind je een mooie tutorial op developer.mozilla.org. In GeoGebra kan je specifieke JavaScript methoden gebruiken om je constructie te wijzigen. Deze methoden refereren naar een object ggbApplet. Dit betekent dat je ze ggbApplet.method_naam(parameter,..,parameter) kunt noemen.
Een volledige lijst van deze methodes vind je op Reference:JavaScript.
VOorbeeld:
for(var i =0;i<10;i++)
ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");
Global JavaScript
In het Global JavaScript deel van de tab Scripting in de Instellingen kan je functies definiëren (geen variabelen) die je kunt gebruiken vanuit de andere scripts. Je kunt ook een functie ggbOnInit(naam, api) definiëren die wordt uitgevoerd bij het inladen van de constructie. De functie ggbOnInit kan je gebruiken voor zogenaamde listeners, zoals in onderstaand voorbeeld.
Voorbeeld:
function onAdd(naam){
alert("Object "+naam+" werd toegevoegd.");
}
function ggbOnInit(name, api){
api.registerAddListener("onAdd");
}
Eerst definieerden we de functie onAdd die bij een gegeven string een boodschap toont, afhankelijk van deze string. Daarna wordt deze ggbOnInit functie gebruikt om GeoGebra te vertellen om deze functie aan te spreken telkens wanneer een nieuw object wordt toegevoegd. Bij het herladen van de constructie wordt de functie ggbOnInit aangesproken en telkens de gebruiker een punt toevoegt, b.v. , verschijnt de boodschap "Object A werd toegevoegd".
Je kunt ook zgn. listeners gebruiken voor acties als hernoemen, verwijderen van objecten of het wissen van een constructie. Een volledige lijst vind je op de pagina Reference:JavaScript.
Opmerking: ggbApplet methods in Global JavaScript zullen buiten ggbOnInit niet werken zoals bedoeld omdat ze zullen worden aangesproken voor de constructie ingeladen wordt.