Difference between revisions of "State/fr"
Samia Bechir (talk | contribs) |
m |
||
(3 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{Multi-lang}} | {{Multi-lang}} | ||
{{LSL Header}} | {{LSL Header/fr}} | ||
<div style="float:right">__TOC__</div> | <div style="float:right">__TOC__</div> | ||
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. | 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. | ||
À tout moment, le script est dans un état ('''state''') donné et réagira à des évènements ('''events''') ou à des données en entrée en fonction de ce que le programmeur aura déterminé. | |||
Par ailleurs, un script peut contenir deux états différents | Par ailleurs, un script peut contenir deux états différents ou plus et réagir différemment aux évènements ou aux données en entrée, selon l'état dans lequel il se trouve à 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. | 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. | ||
Après 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. | |||
{{#vardefine:name|état | {{#vardefine:name|état | ||
}}{{#vardefine:p_jump_state_desc|nom de l'état actif | }}{{#vardefine:p_jump_state_desc|nom de l'état actif | ||
}}{{#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 | }}{{#vardefine:p_events_desc|un ou plusieurs {{LSLGC|Events/fr|évènements}} | ||
}}{{#vardefine:header_title|default { {{LSL Param| | }}{{#vardefine:header_title|default { {{LSL Param|évènements}} } | ||
}}{{#vardefine:header_text|{{{!}} | }}{{#vardefine:header_text|{{{!}} | ||
{{LSL DefineRow| | {{LSL DefineRow|évènements|évènements|{{#var:p_events_desc}}}} | ||
{{!}}} | {{!}}} | ||
Définit l'état par défaut. | Définit l'état par défaut. | ||
}}{{#vardefine:constants_nb| | }}{{#vardefine:constants_nb| | ||
<div id="box"> | <div id="box"> | ||
<h2>state {{LSL Param|label_state|cible}} { {{LSL Param| | <h2>state {{LSL Param|label_state|cible}} { {{LSL Param|évènements}} }</h2> | ||
<div style="padding: 0.5em"> | <div style="padding: 0.5em"> | ||
{{{!}} | {{{!}} | ||
{{LSL DefineRow|nom|cible|{{#var:p_label_state_desc}}}} | {{LSL DefineRow|nom|cible|{{#var:p_label_state_desc}}}} | ||
{{LSL DefineRow| | {{LSL DefineRow|évènements|évènements|{{#var:p_events_desc}}}} | ||
{{!}}} | {{!}}} | ||
Définition de l'état '''cible'''. | Définition de l'état '''cible'''. | ||
</div> | </div> | ||
</div> | </div> | ||
<div id="box"> | <div id="box"> | ||
<h2>state {{LSL Param|jump_state|cible}};</h2> | <h2>state {{LSL Param|jump_state|cible}};</h2> | ||
Line 36: | Line 34: | ||
{{LSL DefineRow|nom|cible|{{#var:p_jump_state_desc}}}} | {{LSL DefineRow|nom|cible|{{#var:p_jump_state_desc}}}} | ||
{{!}}}<br/> | {{!}}}<br/> | ||
Quand un "état cible" est rencontré au cours de l'exécution | Quand un "état cible" est rencontré au cours de l'exécution et que l'état "actuel" et l'état "cible" sont différents : | ||
# | #Déclenche [[state_exit/fr|state_exit]] dans l'état actuel s'il existe et vide la file d'attente d'événements. | ||
#Change l'état | #Change l'état en "cible", tous les [[listen/fr|listen]]s sont arrêtés. | ||
# | #Déclenche [[state_entry/fr|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 | 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 49: | Line 47: | ||
touch_start(integer a) | touch_start(integer a) | ||
{ | { | ||
state | state bonjour; | ||
} | } | ||
} | } | ||
state | state bonjour | ||
{ | { | ||
state_entry() | state_entry() | ||
Line 60: | Line 58: | ||
state default; | state default; | ||
} | } | ||
state_exit() | state_exit() | ||
{ | { | ||
Line 68: | Line 67: | ||
}}{{#vardefine:notes| | }}{{#vardefine:notes| | ||
}}{{#vardefine:caveats|*Lors du changement d'état: | }}{{#vardefine:caveats|*Lors du changement d'état: | ||
**tous les [[listen]]s sont arrêtés. | **tous les [[listen/fr|listen]]s sont arrêtés. | ||
**la | **la file d'attente d'évènements (events) est vidée | ||
*L'état ''default'' doit être défini avant tous les autres. | *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' | *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>mots clef</h3> | }}{{#vardefine:also_header|<h3>mots clef</h3> | ||
{{{!}} | {{{!}} | ||
{{LSL DefineRow||[[jump]]|}} | {{LSL DefineRow||[[jump/fr|jump]]|}} | ||
{{LSL DefineRow||[[return]]|}} | {{LSL DefineRow||[[return/fr|return]]|}} | ||
{{!}}} | {{!}}} | ||
}}{{#vardefine:also_footer| | }}{{#vardefine:also_footer| | ||
}}{{#vardefine:also_functions| | }}{{#vardefine:also_functions| | ||
}}{{#vardefine:also_events| | }}{{#vardefine:also_events| | ||
{{LSL DefineRow||[[state_entry]]|}} | {{LSL DefineRow||[[state_entry/fr|state_entry]]|}} | ||
{{LSL DefineRow||[[state_exit]]|}} | {{LSL DefineRow||[[state_exit/fr|state_exit]]|}} | ||
}}{{#vardefine:also_articles| | }}{{#vardefine:also_articles| | ||
}}{{#vardefine:also_tests| | }}{{#vardefine:also_tests| | ||
}}{{#vardefine:location| | }}{{#vardefine:location| | ||
}}{{LSL Generic}}{{LSLC|Flow Control}}{{LSLC|Script}} | }}{{LSL Generic}}{{LSLC|Flow Control/fr|Contrôle d'exécution}}{{LSLC|Script/fr|Scripts}} |
Latest revision as of 20:46, 2 February 2010
LSL Portail Francophone | LSL Portail Anglophone | Fonctions | Évènements | Types | Operateurs | Constantes | Contrôle d'exécution | Bibliothèque | Tutoriels |
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. À tout moment, le script est dans un état (state) donné et réagira à des évènements (events) ou à des données en entrée 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 données en entrée, selon l'état dans lequel il se trouve à 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. Après 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 }
default { évènements }• évènements | évènements | – | un ou plusieurs évènements |
Définit l'état par défaut.
state cible { évènements }
• nom | cible | – | nom de l'état | |
• évènements | évènements | – | un ou plusieurs évènements |
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 :
- Déclenche state_exit dans l'état actuel s'il existe et vide la file d'attente d'événements.
- Change l'état en "cible", tous les listens sont arrêtés.
- Déclenche 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 file d'attente d'évènements (events) est vidé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 bonjour; } } state bonjour { state_entry() { llOwnerSay("Coucou"); state default; } state_exit() { llOwnerSay("Au revoir"); } }
See Also