State/pl

From Second Life Wiki
< State
Revision as of 13:43, 8 May 2012 by Xintar Citron (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Opis

W języku skryptowym LSL większość skryptów jest nieaktywna dopóki nie zostaną im dostarczone jakieś dane tudzież nastąpi wykrycie jakiejś zmiany w otoczeniu. W każdym momencie skrypt jest w jakimś stanie i będzie reagować na zdarzenia lub dane w zależności od wizji programisty. Jednakże skrypt możne zawierać dwa lub więcej stanów i reagować rożnie na zdarzenia oraz dane w zależności od stanu w jakim w danym momencie się znajduje.

Stanem podstawowym jest stan default. Podczas kompilacji skryptu, zresetowania czy tez załadowania stan ten wywoływany jest domyślnie. Po wywołaniu stanu domyślnego w skrypcie mogą znajdować się instrukcje wywołujące pozostałe stany, które maja rożne ścieżki wykonywania różnych zdarzeń.

Zdarzenie domyślne. <lsl> state default </lsl> Zdarzenie docelowe. <lsl> state target </lsl>


State ma także zdefiniowane zdarzenia, które mogą zostać wywołane. Jest to stan wyjścia. <lsl> state_exit </lsl> Jest wywoływane po:

  • Po opuszczeniu zdarzenia.

Jest to stan wejścia. <lsl> state_entry </lsl> Jest wywoływane po:

  • Po stworzeniu skryptu w obiekcie.
  • Kiedy zapisujemy skrypt.
  • Przy zresetowaniu skryptu.


Przykład

Prosty przykład użycia dwóch stanów. Pierwszy default zmienia kolor obiektu na biały, natomiast drugi zwany State off zmienia kolor na czarny. Zdarzenia są wywoływane, gdy obiekt zostanie naciśnięty.

<lsl>

default // początkowy stan default {

   state_entry()
   {
       llSetColor(<1.0, 1.0, 1.0>, ALL_SIDES); // Zmień kolor obiektu na biały
   }

   touch_start(integer total_number) // Po naciśnięciu na obiekt
   {
       state off; // Idź do stanu off
   }

} state off // Drugi stan zwany off {

   state_entry()
   {
       llSetColor(<0.0, 0.0, 0.0>, ALL_SIDES); // Zmiana koloru obiektu na czarny
   }

   touch_start(integer total_number) // Po ponownym kliknięciu wróć do stanu default
   {
       state default; 
   }

}

</lsl>