La vostra applicazione contempla un insieme di stati ben precisi, e transizioni tra questi.
Il cliente ha deciso che il vostro sofisticato gioco in Papervision -consegnabile l'indomani- abbia tra menu, scelte, interazioni, la definizione d'uno stato d'uso non inizialmente previsto. Semplicemente, volete connotare ognuna di queste entità in modo semplice, univocamente, senza impazzire in miriadi di funzioni dedicate: FenoFSM è lo strumento che vi serve.
Framework "compatto" ed efficiente, realizzato da Allen Chou, talento taiwanese, tutto AS3, offre una implementazione concreta di una Macchina a Stati Finiti (Finite State Machine). Di che si tratta? Tentiamo una definizione formale:
"Una macchina a stati finiti consiste in un insieme di stati e di direzioni di evoluzione degli stati. Le direzioni vengono definite in base a funzioni di stato futuro che associano lo stato corrente e gli ingressi allo stato futuro. Ogni stato specifica inoltre le uscite" (fonte).
Una traduzione applicativa di cià, l'abbiamo in uno degli esempi offerti dall'svn della libreria, dove:
"A" e "B" sono transizioni ammesse dal nostro sistema
da "0" a "6", gli stati che il sistema contempla
Osserviamo che ogni elemento ha un suo identificativo univoco. Nell'apposito wiki abbiamo inoltre una traccia d'uso di massima:
- Creazione dell'oggetto FSM
- Creazione degli stati previsti dal sistema a stati finiti
- Creazione transizioni
- Registrazione Listeners di Eventi per stati e transizioni
- Transizioni tra uno stato e l'altro "triggerate" all'oggetto FSM con funzione ad-hoc.
Aldilà dell'uso in giochi, tra menu, menu secondari, schermate di "pause", tabelle di punteggio, ho trovato questo libreria una valida "mano santa" per modulizzare e pulire il codice, aggregando gli stati dell'applicazione laddove caricamenti di asset, inizializzazioni varie frastagliavano il flusso del programma di funzioncine dedicate. Provatelo e fate sapere.
Ecco il link del progetto FenoFSM, completo di esempi: