touch_end
touch_end(integer num_detected)
エージェントがスクリプトが入ったオブジェクトへのクリック(タッチ)をやめたとき、この
イベントが発生します。
タッチするエージェントの数はnum_detected引数を通じてスクリプトに伝わります。
それらのオブジェクトに関する情報はllDetected*機能で集められるかもしれません。
イベント |
引き金となるアクション |
複数回の検出 |
touch() |
エージェントがオブジェクトをクリックしてる間 |
YES |
touch_start() |
エージェントがオブジェクトをクリックし始めた時 |
NO |
touch_end() |
エージェントがオブジェクトをクリックをやめた時 |
NO |
注意:
「タッチ」とは「クリックし」を意味していて「接触(衝突)」ではありません。
衝突に対処するには、
collision(),
collision_start(),
collision_end()イベントを使用してください。
touch()touch_start()あるいはtouch_end()のイベントを含んでいるスクリプトは、それらがそれをクリックすることを意味する場合にオブジェクトをドラッグするユーザによって引き起こされた「プリムドリフト」を受け付けるかもしれません。
これを回避するためには、グラブを防止するためにllSetStatus(STATUS_BLOCK_GRAB、TRUE)を使用するか、以下を見てください。
マウスボタンが下がっている間に、スクリプトがステートを変更し新しいステートが3つタッチイベントのうちのどのイベントハンドラーも持たない場合、この種のドリフトが起こります。
また、これらのステートに何もしないハンドラ(つまり空白のハンドラ)を加えると、ユーザがオブジェクトのドラッグ操作を許容している間、問題は避けられます。
上のテーブルの「いいえ」は不正確です。シングルマウスクリックで あなたのスクリプトは複数のtouch_startイベントかtouch_endイベントを得ることができます。
不思議なことに!この問題はいくつかのマウスで起こりますが、他のものではおきてないものもあり、、たぶんマウスドライバーに関係しています。
touch_start()イベントでステーツの変更を要求すると、新しいステーツはアクティブになったときに、まだあなたの指がマウスボタン上にあれば、新しい状態のtouch_start()のイベントを引き起こしてしまいます。
ステーツ変更を引き起こすためにtouch_end()イベント使用することにより、これを回避してください。
llSetTouchText()関数、llPassTouches()関数も参照してください。
最終更新:2008年10月01日 09:40