State/ja

From Second Life Wiki

Jump to: navigation, search

Contents

LSLでは、ほとんどのスクリプトは何らかの入力を受け取るか、環境で何らかの変化を検出するまで、アイドル状態にあります。どの瞬間も、スクリプトは何らかのstateにあり、プログラマーによって定義された多くのスキームと一致したイベント、あるいはインプットに反応するでしょう。しかしながら、スクリプトは二つ以上の異なるstateを包含することができ、状態によってイベントやインプットに対して異なる反応があります。

中心的なstateはdefault stateです。スクリプトはコンパイルされた時、リセットもしくはリロードされた時、defaultのstateから入ります。default stateの定義の後に、スクリプトでイベントが処理されることを、どのようにそしてどの変更で使用するのか定義しているstateを、続けて追加することができます。

The correct title of this article is state/ja. The initial letter is shown capitalized due to technical restrictions.

default { events }

• event events 一つ以上の イベントです。

default state の定義です。

state target { events }

• label target state名です。
• event events 一つ以上の イベントです。

target state の定義です。

state target;

• label target 実行するstate名です。

state target;が実行時にぶつかったとき、現在 のstate と target state が異なる場合

  1. 現在のstate内でstate_exitが実行する場合、現在のstateは終了し、イベントキューは消去されます。
  2. targetにstateが変わると、いくつかのlistenは解除されます。
  3. target stateのstate_entryが実行された場合、target stateは

終了します。 もしtarget state が現在のstateと同じ場合、stateを変えることもいくつかの効果をだすこともできないわけではありません。

注意

  • stateを変える上で
    • 全てのlistenはリリースされます。
    • イベントキューは消去されます。
  • default stateはほかのstateに行く前に定義すべきです。
  • state範囲内にユーザ関数、あるいはユーザ変数を設定することはできず、 イベントだけがstate範囲内で定義できるでしょう。

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

state hello
{
    state_entry()
    {
        llOwnerSay("Hello");
        state default;
    }
    state_exit()
    {
        llOwnerSay("Goodbye");
    }
}

関連項目

キーワード

•  jump
•  return

イベント

•  state_entry
•  state_exit

Personal tools