Difference between revisions of "Touch start/ja"
Jump to navigation
Jump to search
Asuka Neely (talk | contribs) (New page: {{LSL Event/ja |event_id=2 |event_delay |event=touch_start |p1_type=integer |p1_name=num_detected |p1_desc=最後のクロック周期までにタッチして探知されたエージェン...) |
|||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{Issues/SVC-3017/ja}}{{LSL_Event/ja|event_id=2|event_delay|event=touch_start | ||
|event_id=2 | |||
|event_delay | |||
|event=touch_start | |||
|p1_type=integer | |p1_type=integer | ||
|p1_name=num_detected | |p1_name=num_detected | ||
|p1_desc= | |p1_desc=最後のクロック周期に検出されたエージェントの数 | ||
|event_desc= | |event_desc=エージェントがタスクのクリックを開始したときに発生します。 | ||
|constants | |constants | ||
|spec | |spec | ||
|caveats | |caveats=* プリムの [[face|面]] で [[Navigating Shared Media|Shared Media]] が動作していて、アバターのビューワがその機能をサポートしている場合、 LSL スクリプトはこの面に対するタッチを検出しません。以前のビューワでのタッチされたものは検出します。 | ||
|examples= | |examples=0 から num_detected - 1 までループさせて、検出したエージェントのキーを取得してみましょう: | ||
< | <source lang="lsl2">default | ||
{ | { | ||
touch_start(integer num_detected) | touch_start(integer num_detected) | ||
Line 19: | Line 16: | ||
llWhisper(0, "Touched by " + llKey2Name(llDetectedKey(i))); | llWhisper(0, "Touched by " + llKey2Name(llDetectedKey(i))); | ||
} | } | ||
}</ | }</source><source lang="lsl2">// If using a touch to change states be careful about the touch_ event order... | ||
// On clicking a prim with touch events we trigger touch_start (as), touch (during) and touch_end (as released). | |||
// The chain of events is established in the script as touch_start is triggered that remains intact until either | |||
// touch_end is triggered or a new touch_start (discounting resets, deletions, taking to inventory etc.). | |||
default | |||
{ | |||
touch_start(integer nd) | |||
{ | |||
llSay(0, "You just started touching me so I'm going to the other state..."); | |||
state other; | |||
} | |||
// A very rapid click would (and does if your VERY quick) beat the state change so the script would/does not behave as expected. | |||
} | |||
state other | |||
{ | |||
touch_end(integer nd) | |||
{ | |||
// The average click will have you catapult through this state with nothing but a chatted message to remember it by. | |||
llSay(0, "The touch that brought you here just ended so I'm going back to default..."); | |||
state default; | |||
} | |||
}</source> | |||
|helpers | |helpers | ||
|also_header | |also_header | ||
|also_events= | |also_events= | ||
{{LSL DefineRow||[[ | {{LSL DefineRow||[[touch]]|}} | ||
{{LSL DefineRow||[[ | {{LSL DefineRow||[[touch_end]]|}} | ||
|also_functions= | |also_functions= | ||
{{LSL DefineRow||[[llSetTouchText | {{LSL DefineRow||[[llSetTouchText]]|}} | ||
{{LSL DefineRow||[[ | {{LSL DefineRow||[[llPassTouches]]|}} | ||
{{LSL DefineRow||[[LlDetectedTouchFace]]|}} | |||
{{LSL DefineRow||[[LlDetectedTouchST]]|}} | |||
{{LSL DefineRow||[[LlDetectedTouchUV]]|}} | |||
{{LSL DefineRow||[[LlDetectedTouchPos]]|}} | |||
{{LSL DefineRow||[[LlDetectedTouchNormal]]|}} | |||
{{LSL DefineRow||[[LlDetectedTouchBinormal]]|}} | |||
|also_articles | |also_articles | ||
|also_footer | |also_footer | ||
Line 35: | Line 63: | ||
|cat1=Touch | |cat1=Touch | ||
|cat2=Detected | |cat2=Detected | ||
|cat3 | |cat3=Grab | ||
|cat4 | |cat4 | ||
}} | }} |
Latest revision as of 09:29, 21 February 2016
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
警告
- タッチ系 イベント がない state からタッチ系イベントがある state に遷移すると、最初のタッチ系イベントは失われます。これは 3 つのタッチ系イベント全て (touch_start, touch, touch_end) にあてはまります。 SVC-3017 を参照してください。
- プリムの 面 で Shared Media が動作していて、アバターのビューワがその機能をサポートしている場合、 LSL スクリプトはこの面に対するタッチを検出しません。以前のビューワでのタッチされたものは検出します。
サンプル
0 から num_detected - 1 までループさせて、検出したエージェントのキーを取得してみましょう:
default
{
touch_start(integer num_detected)
{
integer i = 0;
for(; i<num_detected; ++i)
llWhisper(0, "Touched by " + llKey2Name(llDetectedKey(i)));
}
}
// If using a touch to change states be careful about the touch_ event order...
// On clicking a prim with touch events we trigger touch_start (as), touch (during) and touch_end (as released).
// The chain of events is established in the script as touch_start is triggered that remains intact until either
// touch_end is triggered or a new touch_start (discounting resets, deletions, taking to inventory etc.).
default
{
touch_start(integer nd)
{
llSay(0, "You just started touching me so I'm going to the other state...");
state other;
}
// A very rapid click would (and does if your VERY quick) beat the state change so the script would/does not behave as expected.
}
state other
{
touch_end(integer nd)
{
// The average click will have you catapult through this state with nothing but a chatted message to remember it by.
llSay(0, "The touch that brought you here just ended so I'm going back to default...");
state default;
}
}
参考情報
特記事項
議論
SVC-3017 | A | Server drops first touch event when a script returns to a state with a touch_start handler |
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。