起こるときは立て続けに起こるのが世の常で・・・・
Video Ball の調子があまり良くないことは前にエントリしましたが、その動きがなかなか理解できず、いろいろなところに llSay を組み込んで様子を見ていたのですが、たまーに出る、ものすごく不思議な動きだったんです。
簡単に言うと、llSetTimerEvent を 15秒に設定したのに、すぐに timer() イベントが動いちゃう、、、という現象です。
最初は自分のスクリプトを疑いましたが、、、変な分岐などもしてないし、ちょっとあれかな、と思うのは state change を行っているのですが、それでも、llDialog の次に llSetTimerEvent を 15秒にするというシンプルな処理で、すぐに timer() イベントになる、、、という動きに確信を持つようになりました。
こういうときは wiki とか jira で検索してみるのですが、wiki に同じような現象で悩んでいる、、との書き込みがありました。
http://lslwiki.net/lslwiki/wakka.php?wakka=llSetTimerEvent&show_comments=1#comments
結局、私も同じ方法 (15秒のタイマーの前に llSetTimerEvent(0.0) をおこなう) と、state から抜けるときに再度 state_exit() を使って llSetTimerEvent(0.0)をしつこくやることにしました。美しくないけど、しょうがありませんねぇ。。。
それでもう少し様子見ですが、いまのところ同様の現象は出ていないようで「やったぁ!」と思ったのですが、、、、
あれれ? ビデオ表示しているプリムで、AUTO SCALE が、、、、利いてない!!!
なおかつ、そういえば昨日お友達から LAND の MEDIA 処理が 1.19.1 で機能拡張したことを聞いたのを思い出し・・・
嫌な予感・・・
で、ビューワーの 1.18.5 で試してみると、、、
ううう (T.T) 同じスクリプトなのに表示ちがいます、、、
LAND の設定での AUTO SCALE は有効みたいなので、土地設定のビデオは問題ないのですが、スクリプトによる llParcelMediaCommandList からの ALIGN, TRUE の設定が 1.19 ~ では効かない、、、ということみたいです。
jira を見る限りだとバグレポートあがってないみたいだし。レポート書くしかないですかねぇ。
そうそう、それで Video Ball のスクリプトも一部修正したのですが、LAND の Media はちょっと面白くて、これまで QuickTime が扱うものだけが利用できたのですが、今度は HTML なんかも表示できるようになったみたい。
試したいなぁ、と思いましたが、この Auto Scale の確認で、、、、時間とれずw
まだ、なんか動きが怪しいので、、、ばたばたしてもしょうがないかもね。たとえば、llParcelMediaCommandList からの動画再生は本来 PLAY だけでいいのですが、なぜか LOOP をいれないと動かないとか、、、
やっぱり、、、RC (Release Candidate) ですから・・・ねぇ
スクリプトで動画を操作している方は TYPE の mime 指定の追加もお忘れなく~
http://wiki.secondlife.com/wiki/LlParcelMediaCommandList
wikiのは
返信削除「SetTimerEvent発行したら以前のタイマーカウントはリセットされて欲しい」
ってことですかね。
現状だと現在のタイマーはカウントし続けるから不満だと。
でステートとタイマーの絡みだと、
ステート変わってもタイマーカウントはそのまま続行されますね。
遷移先のステートにtimerイベントが無かった場合、
timerイベントがあるステートに変わるまで待ち続けてます。
なので元のステートに戻ってくるといきなりtimerイベントが発生したりしますな。
すぬまさんのはこの2つ動作の複合かな。
現象というよりそういう仕様…ですかね。
いつも同様の動きだといいのですが、たまに発生する、、、というのが嫌なところですね。
返信削除ダイアログ表示したときに llSetTimerEvent(15.0) を行い、Listen でダイアログからの message を受け取ったら、まず llSetTimerEvent(0.0) をしているのですが....
なので、今は、ダイアログから message を受け取って llSetTimerEvent(0.0) を行い、state_exit するときも llSetTimerEvent(0.0) をして、さらには新しくダイアログを表示するときも、llSetTimerEvent(0.0) に続けて llSetTimerEvent(15.0) をしています・・・
で、変な動きは今のところ発生していないようです。
それで完璧ですのう
返信削除不要なところでは止まるようにキッチリ書かないといけないから、
コード中にllSetTimerEvent(0.0)が何度も出てきて美しくないのは同意です orz