|
Página 2 de 9 LSL EVENTOS LSL es un lenguaje manejado por eventos (events). Literalmente, los scripts se dividen en bloques de código que se activan cuando ocurre un determinado evento. En los scripts se pueden codificar manejadores de eventos ( event-handlers) como por ejemplo: moving_end o touch_start. Si en un script se codifica un event-handler, y un evento de este tipo ocurre, el simulador añadirá este evento a la cola de eventos del script. Los event-handlers del script serán entonces ejecutados en el orden en que han sido encolados ,en una cola tipo FIFO ( First In First Out). Según Cory Linden, la cola de eventos de un script puede almacenar hasta un máximo de 64 eventos. En caso de que la cola se llene, los nuevos eventos serán ignorados sin dar ningún mensaje de aviso. LSL no permite múltiples subprocesos. Los eventos se ejecutan de uno en uno. Los eventos no pueden interrumpirse entre sí. Simplemente son almacenados en una cola FIFO y ejecutados en orden. No hay manera de interactuar en la cola de eventos directamente. Cada vez que ocurre un cambio de estado, la cola de eventos se borra completamente . En cada estado se pueden codificar uno o varios event-handlers. Téngase en cuenta que hay fallos en LSL (bugs). Por ejemplo, cuando un event-handler es llamado a ejecución, todos los argumentos del event-handler se pasan por valor ( no por variable), y son almacenados en la pila ( stack) del script . Si un script tiene insuficiente memoria para guardar todos los argumentos, el script dará un error en ejecución del tipo : "pila / montón de colisión" sin dar mas información. A diferencia de las funciones (functions) , los scripters o usuarios no podemos crear nuestros propios event-handler. Si se desea comprobar si un evento ha ocurrido o no, y no está contemplado dentro de la lista de event-handlers creada por Linden Labs , tendrá que hacerse mediante el evento timer (). También la función llMinEventDelay puede ser de cierta utilidad en la coordinación de eventos. La lista de los event-handlers definidos para LSL por Linden Labs: (Se recomienda visitar http:/www.secondlife.com para obtener la lista actualizada ya que esto puede cambiar con los cambios de versiones) - ¿Qué es una tarea ? - en LSL una tarea es un avatar/agente o un objeto. Ambos pueden chocar con un objeto, aunque sólo los objetos pueden contener scripts. Se puede definir una "tarea" en el sentido de "el objeto que contiene la secuencia de comandos". - ¿Qué es un agente ? - Un agente es un cliente dentro de la presencia de un sim. Todos los usuarios conectarse a un sim como agente. Un agente no es un avatar, a pesar de que está representado en el cliente por uno. Un agente puede ser un objeto creador / propietario y / o un miembro del grupo. Un agente "ve" el mundo a través de una cámara y tiene un avatar. Un avatar es una representación visual de un agente dentro de Second Life;
|