Site search

Google
WWW を検索 backup-beta.blogspot.com を検索

2009年4月11日土曜日

タッチ長押しは良くないかも

うちの製品はタッチ(左クリック)したときとタッチ長押したときで処理分けてるものが結構あるんですね。

スクリプトの長押しの部分は簡単な方法だとこんな感じです。(0.5秒以上押しっぱなしで反応します)
// タッチ長押し
integer hold;

default
{
    touch_start(integer total_number)
    {
        hold=FALSE;
        llSetTimerEvent(0.5);
    }

    touch_end(integer total_number)
    {
        llSetTimerEvent(0);
        if (!hold) {  // タッチのとき
            llSay(0,"タッチ");
        }
    }

    timer()
    {
        llSetTimerEvent(0);
        if (!hold) {  // 長押しのとき
            llSay(0,"タッチ長押し");
        }
        hold=TRUE;
    }
}

でも、長押ししても設定メニュー出ないって言われたことがあるんですよ;;
今までにラッキーレターで2件、掛け時計で1件報告受けてます。(海外2件、国内1件)
ホント僅かですけど、きちんと動作しない環境があるってことは、やっぱり問題あるかなって思いますので、もう今後の新製品には採用しない方向で行くつもりです。


それから、現在発売中の製品は途中から変えたらややこしいので、長押しと別の方法の併用でメニュー出るよう順次修正中なんですね。例えば、掛け時計はダブルクリック、ラッキーレターはレターと時間を表示するプリムをタッチでもメニュー出るようにしました。あとベンダーなどは今修正中です^^;

最初から長押しじゃなくてダブルクリックにしといたら悩まなくて良かったかもですけど。。。まあダブルクリックの簡単な方法も載せときますね^^;
// ダブルクリック
integer click=FALSE;

default
{
    touch_start(integer total_number)
    {
        key id=llDetectedKey(0);
        if (id == llGetOwner()) {
            if (click) {
                click=FALSE;
                llSetTimerEvent(0);
                // ダブルクリックのとき
                llSay(0,"ダブルクリック");
            }
            else {
                click=TRUE;
                llSetTimerEvent(0.3);
            }
        }
    }

    timer()
    {
        llSetTimerEvent(0);
        click=FALSE;
        // タッチ(シングルクリック)のとき
        llSay(0,"シングルクリック");
    }
}

0.3秒以内に2回タッチ(ダブルクリック)されると反応します。


2011年12月21日追記: 最近もう1年くらいでしょうかね(?)長押しが動かないっていう報告来なくなりました。これってもしかしたら、PCの性能とかネットの回線速度が上がってきたりしたからかも知れないなって思ってます。前、日本の方で動かないって言ってた人に聞いてみたら、当時使ってたPCは結構古くて、その後PC買い換えたら大丈夫だったって言ってたんですよ。それと、今年になって公式ビューワーの動作条件がPentium4以上に変更されたので、一世代古いPCは使われなくなったんじゃないかなって。。。

0 件のコメント:

コメントを投稿