2007年05月06日
touchとstateのステキな関係
問題です。
下記のscriptを実行してプリムにtouchすると
default{
touch_start(integer total_number){
llSay(0, "Touch start default");
state state1;
}
}
state state1{
touch_start(integer total_number){
llSay(0, "Touch start state1");
}
touch_end(integer total_number){
llSay(0, "Touch end state1");
state default;
}
}
このように
"Touch start default"
"touch end state1"
と表示されますが
では、プリムをドラッグしてからマウスをリリースした場合はどうなるでしょう?
予想外にも正解は…
こうなります。
"Touch start default"
"Touch start state1"
"touch end state1"
真ん中に余計な一行がはさまれております!
stateを変更するとlistenイベントやtimerイベント等
すべてのイベントリスナが解除されますが、
まさかマウスダウン(touch_start)まで解除されようとは…
というかですね、押してはおらずドラッグしてるだけなのに
touchイベント発生というのはなんだか腑に落ちません。
いや、clickともpressとも言っておらず、
touchだから正しいのか…??
stateを酷使するプログラムスタイルの方はご注意を。
Posted by harayoki at 05:10│Comments(0)
│script