www.flickr.com
Whitfield-In-World's items Go to Whitfield-In-World's photostream
| flickr の利用方法
ソラマメブログ › Second Life 見たこと・聞いたこと › スクリプト › llSetTimerEvent と llParcel...

2008年03月08日

llSetTimerEvent と llParcel...

起こるときは立て続けに起こるのが世の常で・・・・

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
タグ :動画LSLバグ

この記事へのトラックバックURL

http://mydiary.slmame.com/t166916
この記事へのコメント
wikiのは
「SetTimerEvent発行したら以前のタイマーカウントはリセットされて欲しい」
ってことですかね。
現状だと現在のタイマーはカウントし続けるから不満だと。

でステートとタイマーの絡みだと、
ステート変わってもタイマーカウントはそのまま続行されますね。
遷移先のステートにtimerイベントが無かった場合、
timerイベントがあるステートに変わるまで待ち続けてます。
なので元のステートに戻ってくるといきなりtimerイベントが発生したりしますな。

すぬまさんのはこの2つ動作の複合かな。
現象というよりそういう仕様…ですかね。
Posted by Nullpo at 2008年03月11日 16:35
いつも同様の動きだといいのですが、たまに発生する、、、というのが嫌なところですね。

ダイアログ表示したときに llSetTimerEvent(15.0) を行い、Listen でダイアログからの message を受け取ったら、まず llSetTimerEvent(0.0) をしているのですが....

なので、今は、ダイアログから message を受け取って llSetTimerEvent(0.0) を行い、state_exit するときも llSetTimerEvent(0.0) をして、さらには新しくダイアログを表示するときも、llSetTimerEvent(0.0) に続けて llSetTimerEvent(15.0) をしています・・・

で、変な動きは今のところ発生していないようです。
Posted by Whitfield-In-WorldWhitfield-In-World at 2008年03月11日 18:22
それで完璧ですのう
不要なところでは止まるようにキッチリ書かないといけないから、
コード中にllSetTimerEvent(0.0)が何度も出てきて美しくないのは同意です orz
Posted by Nullpo at 2008年03月11日 18:53
※このエントリーではブログ管理者の設定により、ブログ管理者に承認されるまでコメントは反映されません
画像に書かれている文字を入力して下さい