USAR OBJETOS
► Usar objetos
► Crea guión
Contenido |
Asociar un guión (script) a un objeto
Todos los objetos pueden disponer de un guión asociado. Para asociar un guión a un objeto se usa el cuadro de diálogo Propiedades, Programa de Guión.
Existen dos tipos de guiones: el Guión de GeoGebra y el guión JavaScript.
Un guión es una secuencia ordenada de instrucciones que se ejecutan al hacer clic o actualizar el valor de un objeto. Por ejemplo, una imagen o una circunferencia pueden actuar como botones, disparando una acción al hacer clic sobre ellos o actualizar su valor.
En el caso de los guiones JavaScript, también se puede disparar el guión al cargar el applet y mediante el uso de escuchas (listeners, son comandos especiales de JavaScript que se mantienen alerta a la espera de un determinado suceso).
Guión de GeoGebra
En el cuadro de diálogo Propiedades, Programa de Guión, una vez introducido el Guión de GeoGebra en alguna de las pestañas Al clic o Al Actualizar, nos aseguramos de que está elegido:
Después, debemos pulsar el botón .
Por ejemplo, creamos un punto A=(0,1) y un botón (aunque podría ser cualquier otro objeto) e introducimos en la pestaña Al clic la instrucción:
A= A + (2, 1)
y pulsamos OK. Cada vez que hagamos clic en el botón, el punto A se trasladará por el vector (1, 2): guiones_geogebra.ggb.
En este ejemplo solo hemos introducido una línea en el guión, pero podemos introducir las que queramos. En el siguiente archivo de ejemplo: guiones_geogebra2.ggb, hemos creado la lista:
lista1 = {"Rojo", "Verde", "Azul"}
el punto A = (1, 1) y un deslizador n de variable entera entre 1 y 3. En la pestaña Al Actualizar del Programa de Guión del cuadro de diálogo Propiedades de n, escribimos el comando Colores:
Colores[A, Elemento[lista1, n]]
elegimos Guión de GeoGebra, y pulsamos OK. Al mover el deslizador, el punto A cambiará de color.
Un guión para crear un contador de tiempo (cronómetro): segundos.ggb
Un guión para crear un contador de aciertos: contador.ggb
Botones
El controlador Botón ha sido específicamente diseñado para admitir guiones que se ejecuten al hacer clic. Cualquier objeto puede desencadenar una serie de acciones al hacer clic sobre él, pero para el usuario suele ser más intuitivo que ese comportamiento se realice mediante botones.
Casillas de Entrada
El controlador Casilla de Entrada ha sido específicamente diseñado para admitir guiones que se ejecuten al actualizar un valor. Cuando escribimos algo en el campo de una Casilla de Entada y pulsamos Intro, el texto introducido (sea cual fuere su contenido) es transferido al Guión de GeoGebra con el comodín %0 lo que permite usar guiones del estilo:
- text = "%0"
- Text[%0, (3, 4)]
Este texto también es transferido al guión JavaScript con la variable arg lo que permite usar guiones del estilo:
- ggbApplet.evalCommand('input="' + arg + '"');
El comando Si en los guiones
En muchos lenguajes de programación, la orden condicional Si (If) significa:
Si se cumple tal condición, se hace cierta cosa y en caso contrario, otra.
Pero en GeoGebra los argumentos de un comando no son órdenes sino valores (alternativos según la condición). Si deseamos, por ejemplo, asignar el valor 2 a b cuando a sea mayor que 2, el modo correcto de hacerlo es:
Valor[b, Si[a > 2, 2, b]]
y el modo incorrecto sería:
Si[a > 2, Valor[b, 2], b]
JavaScript
Este apartado requiere conocimientos básicos de programación orientada a objetos.
JavaScript es un lenguaje de programación empleado en Internet. A diferencia de un Guión de GeoGebra, los comandos JavaScript no requieren una ejecución secuencial, sino que pueden programarse mediante controles de flujo (comandos while y for).
Tutorial genérico de JavaScript .
En cierta forma, un Guión de GeoGebra pueden también crear controles de flujo, por ejemplo anidando el comando Secuencia en el comando Ejecuta.
Pueden emplearse comandos especiales de JavaScript. Estos métodos corresponden al objeto GGBApplet, lo que implica que la sintaxis para usarlos será:
ggbApplet.nombreDeMétodo(parámetro, ..., parámetro)
GeoGebra contiene su propio intérprete de JavaScript. Al exportar la construcción como página web, podemos elegir si empleamos este intérprete o el propio del navegador.
Guión JavaScript
Este apartado requiere conocimientos básicos de programación orientada a objetos.
En el cuadro de diálogo Propiedades, Programa de Guión, una vez introducido el guión JavaScript en alguna de las pestañas Al clic o Al Actualizar, nos aseguramos de que está elegido:
Después, debemos pulsar el botón .
Al elegir JavaScript y exportar la construcción como página web, cada uno de esos guiones JavaScript de cada uno de los objetos se integrará en el código HTML de la página web, como una función de JavaScript independiente, que podrá interpretar el navegador.
Para poder hacer esto, el navegador necesita conocer el nombre del applet que permite su identificación en la página web. Ese nombre es, por defecto, ggbAplet.
Por ejemplo, para realizar la misma acción del ejemplo anterior, vía JavaScript, introducimos en la pestaña Al clic la instrucción:
ggbApplet.evalCommand("A = A + (1,2)");
elegimos en la parte inferior JavaScript y pulsamos OK. Cada vez que hagamos clic en el botón, el punto A se trasladará por el vector (1, 2): guiones_javascript.ggb.
La anterior expresión equivale a:
with(ggbApplet){
evalCommand("A = A + (1,2)");
}
Si ese archivo lo exportamos como página web, veremos que en el código HTML aparece la función de JavaScript:
function GGBbotón1() {
var GGBApplet = document.ggbApplet;
GGBApplet.evalCommand("A = A + (1,2)");
}
Observemos que la instrucción:
var GGBApplet = document.ggbApplet;
ha sido añadida automáticamente. Si escribimos el código JavaScript directamente en la páginas web deberemos añadirla manualmente. Además, si hubiera varios applets en una misma página, deberemos asignar distintos nombres (p.e., GGBApplet1, GGBApplet2...) a cada uno de ellos, para que el navegador pueda discriminarlos, lo que supone utilizar esos mismos nombres en los guiones JavaScript de cada una de las construcciones afectadas:
var GGBApplet=document.applets[0]; var GGBApplet1=document.applets[1];
Volviendo a GeoGebra, si borramos esa instrucción de JavaScript y pegamos esta otra (sin olvidar pulsar al final OK):
for(var i = 0; i<10; i++)
ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");
cada vez que hagamos clic en el botón, se crearán diez nuevos puntos aleatorios, nominados como A0, ..., A9: diez_negritos.ggb.
Además hay dos funciones JavaScript extra, las funciones alert y prompt: alert_prompt.ggb
- alert("Hola");
- prompt("¿Cuál es tu aplicación favorita?", "GeoGebra");
JavaScript Global
Este apartado requiere conocimientos básicos de programación orientada a objetos.
El contenido de la pestaña JavaScript Global está disponible para todos los objetos, y también será exportado al archivo HTML. Este guión se ejecutará antes de cargar el applet. También pueden añadirse escuchas en la función GGBOnInit().
function GGBOnInit() { }
Por ejemplo, este podría ser un guión de JavaScript Global, en donde se hace uso de la escucha registerAddListener, de forma que cada vez que se cree un objeto aparezca un mensaje.
function alCrearObjeto(nombre){
alert("Objeto " + nombre + " añadido.");
}
function GGBOnInit(){
ggbApplet.registerAddListener("alCrearObjeto");
}
Ningún método GGBApplet funcionará en esta pestaña si no está dentro de la función GGBOnInit(), pues tal método será llamado antes de cargar el applet.