LlSetClickAction/ja

From Second Life Wiki
< LlSetClickAction
Revision as of 14:02, 25 February 2016 by SakuraNoel Fayray (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

要約

関数: llSetClickAction( integer action );

プリムがクリックされたときに実行されるアクションを設定します (いわゆる クリックアクション) 。

• integer action CLICK_ACTION_* フラグ

カーソルがプリムの上にあるとき、カーソルの画像がアクションに応じて変わります。

定数

フラグ 説明 アイコン
CLICK_ACTION_NONE 0 標準動作の機能:プリムがタッチされた時に、タッチイベントが作動します
CLICK_ACTION_TOUCH 0 プリムがタッチされた時に、タッチイベントが作動します
CLICK_ACTION_SIT 1 プリムがタッチされた時に、アバターがプリムの上に座ります Toolsit.png
CLICK_ACTION_BUY 2 プリムがタッチされた時に、購入ダイアログが開かれます Toolbuy.png
CLICK_ACTION_PAY 3 プリムがタッチされた時に、支払いダイアログが開かれます Toolpay.png
CLICK_ACTION_OPEN 4 プリムがタッチされた時に、オブジェクトのインベントリのダイアログが開かれます Toolopen.png
CLICK_ACTION_PLAY 5 タッチで土地のメディアを再生または一時停止します Toolplay.png
CLICK_ACTION_OPEN_MEDIA 6 タッチで土地のメディアを再生します。一時停止はありません Toolmediaopen.png
CLICK_ACTION_ZOOM 7 ズーム (ビューワ 2) Toolzoom.png

警告

  • オブジェクトのルートプリムに設定された場合、指定された CLICK_ACTION_* は子プリムにも適用されます。子プリムで llSetClickAction の設定がされていてもです (上書きされます) 。しかし、 (例えば touch の場合) CLICK_ACTION_* がルートプリムに設定されたが、全ての子プリムには設定されていないという場合 (タッチ系 イベント スクリプト がない場合 (これはデフォルトの CLICK_ACTION_TOUCH を作成します)) 、ルートの CLICK_ACTION_* は見えず、クリックしたときに CLICK_ACTION_* が適用されることになります。カーソルの動作と見た目を両方とも正しくするには、 子プリムとルートプリムで CLICK_ACTION_* が一致していなければなりません。
All Issues ~ Search JIRA for related Bugs

サンプル

これはユーザに行わせる処理に応じて変わるユーザインターフェースを作成するのに良い方法です。
key sitter;

list up_up_and_away;

CoughsAndLolz()
{
    integer count = 0;
    vector XYZ = llGetPos();
    float X = XYZ.x;
    float Y = XYZ.y;
    do
        up_up_and_away = up_up_and_away + [PRIM_POSITION, <X,Y,4000.0>];
    while((++count) < 400);
}

default
{
    state_entry()
    {
        llSetClickAction(CLICK_ACTION_SIT); // state entry では、クリックで座るように設定します
        llSitTarget(<0.0,0.0,0.01>, ZERO_ROTATION);
    }
    changed(integer change)
    {
        if(change & CHANGED_LINK)
        {
            sitter = llAvatarOnSitTarget();
            if(sitter)
            { // 誰かが座っています
                CoughsAndLolz();
                llSetClickAction(CLICK_ACTION_TOUCH);// クリックアクションを変更して、touch_start が起動されるようにします
                llSay(0, "Click me for a thrill");
            }
        }
    }
    touch_start(integer detected)
    {
        if(sitter)
        {
            llSetLinkPrimitiveParams(LINK_SET, up_up_and_away);
            llUnSit(sitter);
            llDie();
        }        
    }           
}

注意点

CLICK_ACTION_NONE または CLICK_ACTION_TOUCH (デフォルト) 以外を CLICK_ACTION_* フラグに設定すると、スクリプトはプリムがクリックされても タッチ系イベント を発生させなくします。

関連項目

イベント

•  touch_start
•  touch
•  touch_end

関数

•  llPassTouches

記事

•  検出

特記事項

経緯

All Issues

~ Search JIRA for related Issues
   Shift-drag to copy object does not copy all settings
   Linux Viewer: CLICK_ACTION_PAY shows CLICK_ACTION_PLAY icon

Signature

function void llSetClickAction( integer action );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。