2008年07月03日
長押しクリック
お世話になります。
クリックを長押しでダイアログを表示させるのをよくみかけるのですが
「長押し」という関数があるんでしょうか・・
それともtouchイベントで作成する方法なんでしょうか。
やり方をご存知の方いらっしゃいましたらご教授いただけますでしょうか。
よろしくおねがいします。
クリックを長押しでダイアログを表示させるのをよくみかけるのですが
「長押し」という関数があるんでしょうか・・
それともtouchイベントで作成する方法なんでしょうか。
やり方をご存知の方いらっしゃいましたらご教授いただけますでしょうか。
よろしくおねがいします。
テクスチェンジのHUDについて
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
http://ogasawara.slmame.com/e156117.html
touch_start()…マウスボタンがクリックされた瞬間
touch_end()…マウスボタンが放された瞬間
この両者のイベントが発生する時間差を調べます。llResetTime()とllGetTime()を使うと簡単です。
ここで、touch_end()の中で測定した時間差が一定以上である場合に「長押しされた」と判断し、処理をするという方法です。
私はこんなふうにします
※timerをほかの事に使いたい人には
お勧めできません。
タッチして一秒たったら処理が始まります
ただし、その処理が始まるまでに
タッチをやめたら、タイマーがクリアされて
処理が始まりません。
結果的に1秒以上押しっぱでないとダメというコードです。
touch_start(){
llSetTimerEvent(1.0);
}
touch_end(){
llSetTimerEvent(0.0);
}
timer()
{
llSetTimerEvent(0.0);
//やりたい処理を書く
}
integer hold;
default
{
touch_start(integer total_number)
{
hold=FALSE;
llSetTimerEvent(0.5);
}
touch_end(integer total_number)
{
llSetTimerEvent(0);
if (!hold) llSetColor(<1,0,0>,ALL_SIDES); // タッチで赤色
}
timer()
{
llSetTimerEvent(0);
hold=TRUE;
llSetColor(<0,1,0>,ALL_SIDES); // 長押しは緑色
}
}
asaさんのコード
・timerを他のことに使える
・touchをやめたときに発動
・時間を厳密にチェック
ささぴさんのコード
・timerを他のことに使える
・touchをやめたときに発動
※SIM状況にもよると思いますが
その回数のtouchイベントが発生するのに
4~5秒かかるというのは、ある種びっくりでした。
やってみないとわからないものですね
私のやつ
・timerを他のことに使いにくい
・touchを続けたまま発動
千尋さんのコード
・timerを他のことに使いにくい
・touchを続けたまま発動
・通常のtouchと長押しを区別して処理できる
千尋さんのコードの
「通常のtouchと長押しを区別して処理できる」というのは
大きなポイントだと思います。
また、フラグをひとつ追加するだけで
asaさんやささぴさんのコードにも使えるのもいい感じですよね。
よろしくおねがいします。