Difference between revisions of "State/fr"

From Second Life Wiki
Jump to navigation Jump to search
Line 12: Line 12:
}}{{#vardefine:p_label_state_desc|nom de l'état
}}{{#vardefine:p_label_state_desc|nom de l'état
}}{{#vardefine:p_events_desc|un ou plusieurs événements ({{LSLGC|Events|events}})
}}{{#vardefine:p_events_desc|un ou plusieurs événements ({{LSLGC|Events|events}})
}}{{#vardefine:header_title|événement { {{LSL Param|events}} } default
}}{{#vardefine:header_title|default { {{LSL Param|événements}} } (état par défaut)
}}{{#vardefine:header_text|{{{!}}
}}{{#vardefine:header_text|{{{!}}
{{LSL DefineRow|événement|événements|{{#var:p_events_desc}}}}
{{LSL DefineRow|événement|événements|{{#var:p_events_desc}}}}
Line 25: Line 25:
{{LSL DefineRow|événement|événements|{{#var:p_events_desc}}}}
{{LSL DefineRow|événement|événements|{{#var:p_events_desc}}}}
{{!}}}
{{!}}}
Définition de l'état '''cible''' (target).
Définition de l'état '''cible'''.
</div>
</div>
</div>
</div>
Line 38: Line 38:
Quand un "état cible" est rencontré au cours de l'exécution, et que l'état "actuel" et l'état "cible" sont différents :
Quand un "état cible" est rencontré au cours de l'exécution, et que l'état "actuel" et l'état "cible" sont différents :
#Actionne [[state_exit]] dans l'état actuel s'il existe, et efface la chaîne d'événements.
#Actionne [[state_exit]] dans l'état actuel s'il existe, et efface la chaîne d'événements.
#Change l'état pour ''cible'', tous les [[listen]]s sont arrêtés.
#Change l'état pour "cible", tous les [[listen]]s sont arrêtés.
#Actionne [[state_entry]] dans l'état ''cible'' s'il existe.
#Actionne [[state_entry]] dans l'état "cible" s'il existe.
Si l'état ''cible'' est le même que l'état ''en cours'' state, il n'y a pas de changement d'état, ni aucune conséquence.
Si l'état "cible" est le même que l'état "en cours", il n'y a pas de changement d'état, ni aucune autre conséquence.
</div>
</div>
</div>
</div>
Line 73: Line 73:
*Les états ne peuvent pas contenir directement de fonctions ou de variables, il ne doit y avoir que des définitions d'événements dans le contenu de l'état.
*Les états ne peuvent pas contenir directement de fonctions ou de variables, il ne doit y avoir que des définitions d'événements dans le contenu de l'état.
}}{{#vardefine:helpers|
}}{{#vardefine:helpers|
}}{{#vardefine:also_header|<h3>Keywords</h3>
}}{{#vardefine:also_header|<h3>mots clef</h3>
{{{!}}
{{{!}}
{{LSL DefineRow||[[jump]]|}}
{{LSL DefineRow||[[jump]]|}}

Revision as of 13:22, 11 December 2007

En LSL, la plupart des scripts attendent sans rien faire jusqu'à ce qu'ils reçoivent une information ou qu'ils détectent un changement dans leur environnement. A tout moment, le script est dans un état (state), et réagira a des événements (events) ou des informations en fonction de ce que le programmeur aura déterminé. Par ailleurs, un script peut contenir deux états différents, ou plus, et réagir différemment aux événements ou aux informations, selon l'état dans lequel il est placé à ce moment.

L'état principal est l'état par défaut (default). Quand un script est compilé, réinitialisé ou chargé, c'est l'état dans lequel il ira par défaut. Apres la définition de l'état par défaut, d'autres états peuvent être définis, de façon à ce que le script réagisse différemment aux événements

default { événements } (état par défaut)

default { événements } (état par défaut)
• événement événements un ou plusieurs événements (events)

Définit l'état par défaut.

state cible { events }

• nom cible nom de l'état
• événement événements un ou plusieurs événements (events)

Définition de l'état cible.

|- |

state cible;

• nom cible nom de l'état actif

Quand un "état cible" est rencontré au cours de l'exécution, et que l'état "actuel" et l'état "cible" sont différents :

  1. Actionne state_exit dans l'état actuel s'il existe, et efface la chaîne d'événements.
  2. Change l'état pour "cible", tous les listens sont arrêtés.
  3. Actionne state_entry dans l'état "cible" s'il existe.

Si l'état "cible" est le même que l'état "en cours", il n'y a pas de changement d'état, ni aucune autre conséquence.

Caveats

  • Lors du changement d'état:
    • tous les listens sont arrêtés.
    • la chaine d'événements (events) est effacée
  • L'état default doit être défini avant tous les autres.
  • Les états ne peuvent pas contenir directement de fonctions ou de variables, il ne doit y avoir que des définitions d'événements dans le contenu de l'état.

Examples

default
{
    touch_start(integer a)
    {
        state hello;
    }
}

state hello
{
    state_entry()
    {
        llOwnerSay("Coucou");
        state default;
    }
    state_exit()
    {
        llOwnerSay("Au revoir");
    }
}

See Also

mots clef

•  jump
•  return

Events

•  state_entry
•  state_exit