Alice 3.1 – ¿En qué lugares podemos poner nuestro código?

Cuando pulsamos el botón “Run” de Alice el programa comienza a ejecutar el código que hemos metido en el procedimiento “MyFirstMethod”. Esta es una de las primeras cosas que se aprenden al programar en Alice. Sin embargo, hay otros lugares donde se puede introducir código además de “MyFirstMethod”.

Alice funciona como lo hace un programa en java. Al pulsar “Run” el primer procedimiento que se ejecuta es el “main“, que está en la clase “Program”

ClaseProgram

El “main” crea una instancia de la clase “Program” , la llama “story” y a continuación la inicializa. Con otro procedimiento llamado SetActiveScene se activa el objeto de clase Scene, que es el que proporciona el escenario y los actores para la animación.

ProcedimientoMain1

El objeto Scene necesita procedimientos especiales (Unique Procedures) para la tarea de crear la escena y gestionar la animación. El “handleActiveChanged” gestiona las llamadas a estos procedimientos.

handleActiveChanged

Primero es llamado el performGeneratedSetup. Todos los objetos que creamos en el “Scene Editor” y las acciones que realizamos sobre ellos antes de pulsar el boton “Run”, son almacenados en forma de código en el performGenerateSetup. En el momento que es invocado, este procedimiento ejecuta ese código (que permanece oculto para el usuario) de tal forma que antes de comenzar a ejecutarse las sentencias programadas por el usuario, la escena quede recreada en la “runtime window” de la misma manera que en el “Scene Editor”.

performGeneratedSetup

En la imagen se pueden ver las sentencias utilizadas para crear el ambiente inicial de la escena, creando los objetos “ground” y “camera”. A continuación vendría el código correspondiente a los objetos creados en el “Scene Editor” por el usuario. Desde Netbeans se puede acceder a este código y modificarlo.

En segundo lugar es llamado el “performCustomSetup“, cuya función es contener el código que pueda necesitarse para efectuar en la escena ajustes difíciles o imposibles de  hacer desde el “Scene Editor” y solo se puedan llevar a cabo mediante sentencias. Un ejemplo del uso de este procedimiento es para posicionar objetos en la escena. En el libro “Alice 3 in Action: Computing Through Animation” de Joel Adams viene el siguiente ejemplo:

EjemploperformCustomSetup

En este caso el performCustomSetup se utiliza para para colocar de manera aleatoria en la escena los objetos previamente creados en el “Scene Editor”.

El tercer y último procedimiento llamado desde el handleActiveChanged es el “initializeEventListeners“, que inicializa los escuchadores de eventos (event listeners). Cuando durante la ejecución del programa detectan que se ha producido el evento le dan paso al código introducido por el usuario para el caso de que produzca dicho evento. Hay event listeners para diferentes tipos de evento, como pulsaciones de teclado, clics de ratón, colisiones entre objetos, etc.

EventListeners

Cuando termina el procedimiento handleActiveChanged es detectado el primero de los eventos (la activación de la escena) por el addSceneActivationListener y pasa a ejecutarse el código asociado, que no es otro que el conocido procedimiento “MyFirstMethodaddSceneActivationListener

Por tanto, desde que pulsamos el botón “Run” hasta que comienza a ejecutarse myFirstMethod son invocados los siguientes procedimientos:

 

1. main

Para acceder a este procedimiento tiene que estar activada en Preferences la opción “Main Program Class (available)”. Vamos al Botón de clases. En el desplegable elegimos la clase Program y en el siguiente desplegable elegimos el procedimiento main.

ProcedimientoMain2

2. handleActiveChanged

En el Panel de Métodos (Methods Panel) elegimos this en el desplegable y aparecen los cuatro procedimientos que tiene scene por defecto:

ProcedimientosClaseScene

Hacemos clic derecho en el tercer procedimiento y seleccionamos la opción handleActiveChanged. Aparece una nueva pestaña con el código.

handleActiveChanged1

3. performGeneratedSetup

Es el código generado automáticamente para recrear la escena introducida por el usuario. Se accede a él desde el procedimiento del punto anterior. Clic derecho en él y elegimos la opción performGeneratedSetup para que aparezca la pestaña con el código. Es a nivel informativo porque cualquier modificación que hagamos aquí se va a sobreescribir al pulsar Run.

performGeneratedSetup

 

4. performCustomSetup

El código de usuario para ajustes difíciles o imposibles desde el “SceneEditor”. El camino más rápido para acceder a este procedimiento es ir a la pestaña de la clase Scene y hacer clic en él.

PestañaScene

5. initializeEventListeners

Inicializa los escuchadores de eventos, en los cuales de puede introducir código. Tiene su propia pestaña por defecto.

6. addSceneActivationListener

Igual que en el punto anterior. Es el primer escuchador de eventos que se activa

 

Por otra parte, pulsando en el Boton de Clases podemos acceder a un desplegable por cada clase, a través del cual es posible añadir a una clase un procedimiento, una función o una propiedad.

 

Ahora ya podemos hacer una relación de los lugares en los que el usuario de Alice 3 puede introducir su código:

 

1. En el performCustomSetup, para ajustes en la escena previos a la ejecución del programa en sí.

2. En cada uno de los Event Listeners, para que se ejecute cada vez que se produzca el evento en cuestion

3. Aunque va incluido en el punto anterior, en particular se puede introducir también código en el addSceneActivationListener, para que se ejecute al mismo tiempo que el programa alojado en MyFirstMethod

4. En MyFirstMethod, por supuesto.

5. y para cada clase: procedimientos, funciones y propiedades

 

A continuación un cuadro extraido de http://www.alice.org que explica los procedimientos vistos anteriormente

ProceduresForthisScene

 

 

 

 

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: