Categoria:LSL:Stati

Da Second Life Italia Wiki.

[modifica] Stati

Il linguaggio LSL è caratterizzato dalla definizione dello stato dello script, e della transizione da uno stato all'altro usando la direttiva state default;.

Gli stati sono definiti dalla parola chiave 'state nomestato { eventi dello stato} e da uno stato speciale definito di "default" , definito dalla parola chiave default.

Ogni script deve definire lo stato default, che deve essere il primo stato presente all'inizio dello script prima di ogni altro stato. In caso contrario il compilatore riporterà un errore di sintassi.

All'interno degli stati sono definiti i vari gestori degli eventi che lo stato cattura ricevendo messaggi dalla virtual machine che esegue gli script sul server del simulatore che si è fatto carico dello script. Ogni stato avrà almeno un evento gestito, altrimenti verrà generato un errore di sintassi.

Quando l'interprete raggiunge la parola chiave state per il cambio di stato, l'evento contenente il cambiamento di stato viene immediatamente interrotto per passare al nuovo stato. Se lo stato presenta un gestore dell'evento state_exit, questo verrà invocato prima di passare al nuovo stato.

Quando si ha un cambio di stato tutte le code degli eventi vengono azzerate, gli eventi pendenti eliminati, e gli i gestori inutilizzati resettati.

[modifica] Esempio

default 
{
    // evento eseguito all'ingresso dello stato
    state_entry()
    {
        //messaggio di chat emesso dall'oggetto associato allo script!
        llSay(0, "Sono acceso!"); 
        // imposto tutti i lati alla massima luminosità,                               
        // ALL_SIDES è una constante predefinita in LSL
        llSetColor(<1,1,1>, ALL_SIDES); 
    }

    touch_start(integer total_number)
    {
        state off; // passo allo stato off
    }
} // qui termina lo stato di default.
state off // inizio dello stato off { state_entry() { llSay(0, "Sono spento!"); // imposto tutti i lati alla minima luminosità llSetColor(<0,0,0>, ALL_SIDES); }
    touch_start(integer total_number)
    {
        //torno allo stato di default
        state default; 
    }

Pagine nella categoria "LSL:Stati"

Questa categoria contiene una pagina.

d

Strumenti personali