Sie sind auf Seite 1von 3

MQUINAS DE ESTADOS

Una mquina de estados es una estructura de programa que nos sirve para determinar
el comportamiento de algo en base al estado en el que se encuentre. Para cada estado
por tanto se tendr un comportamiento.
Las mquinas de estados se pueden utilizar en muchos aspectos y niveles. Podemos
utilizarlas para controlar el estado de la aplicacin que estemos realizando, o utilizarlas
slo para controlar un clip de pelcula.
Ejemplos:
* Una instalacin interactiva donde queremos controlar cuando est el usuario
interactuando de cuando no.
* Una aplicacin web de vida artificial donde un individuo puede pasar por varios
estados: crecimiento, adulto, nutricion, reproduccion...

Diagrama de estados
Siempre que pensemos utilizar una mquina de estados es muy recomendable dibujar
primero un diagrama de estados.
Un diagrama de estados se compone de 2 elementos principales: Estados y
Transiciones.

Estados
Un estado representa el comportamiento de un elemento que hace algo durante
cierto tiempo.
Representaremos los estados con rectngulos. Y si queremos especificar lo que se hace
mientras nos encontremos dentro de ese estado, lo haremos entre llaves.

Transicin
Una transicin es el paso de un estado de origen a otro de destino. Tiene siempre
asociada una condicin y puede requerir la ejecucin de alguna accin.
Representaremos las transiciones con una flecha a la que aadiremos una linea
horizontal. La flecha va del estado de origen al estado destino de la transicion. Encima
de esa lnea colocaremos la condicin que desencadena la transicin. Debajo de la
lnea colocaremos las acciones que queremos que se ejecuten en cada transicin.
Las acciones que asociamos a una transicin se ejecutan solo una vez al principio del
estado de destino. Las acciones que asociamos a un estado se ejecutan siempre que
permanezcamos en ese estado.
Punto de inicio
Adems de estados y transiciones nos encontraremos siempre con un punto de inicio
que seala cual es el estado inicial y si se tuvieran que ejecutar algunas acciones al
entrar por primera vez en ese estado.
El punto de inicio lo representaremos con un crculo.

Punto de fin
Opcionalmente nos podemos encontrar con otro crculo, que representa el final de la
ejecucin de la mquina de estados.

Transcripcin a cdigo
Utilizaremos un evento Event.ENTER_FRAME para crear la mquina de estados. Este
evento har que siempre se estn ejecutando las acciones correspondientes al estado
en que nos encontremos y evaluar si se cumple alguna condicin de las transiciones
que parte de dicho estado.
Dentro del evento Event.ENTER_FRAME nos encontraremos con una estructura
condicional switch que nos permite seleccionar el estado en el que nos encontramos
por medio de una variable llamada estado que creamos nosotros.
Dentro de cada estado, dentro de cada case, colocaremos las acciones que se ejecutan
en cada fotograma del estado. Adems evaluaremos si se cumple alguna de las
condiciones de las transiciones que parten de ese estado hacia otros.
En caso de que se produzca alguna condicin ejecutamos ah mismo las acciones de la
transicin correspondiente.
A la hora de transcribir el diagrama anterior a cdigo obtendriamos algo similar al
siguiente programa:
//Estado inicial
elemento.estado = "estado1";
//acciones de inicio
//...

addEventListener(Event.ENTER_FRAME, maquinaEstados);
function maquinaEstados(){
switch(estado){
case "estado1":
//acciones del estado1
//...
if(condicion de la transicion1-2){
//acciones de la transicion1-2
//...
estado = "estado2";
}
break;
case "estado2":
//acciones del estado2
//...
if(condicion de la transicion2-1){
//acciones de la transicion2-1
//...
this.estado = "estado1";
}else if(condicion de la transicion2-fin) {
//acciones de la transicion2-1
//...
estado = null;
this.onEnterFrame = null;
}
break;
}
}

Das könnte Ihnen auch gefallen