ちょっとSLの音楽再生の方法についてお問合わせを頂きました。
ありがとうございます^^
私のやり方ですが、、、、ご紹介させていただきますw
SLの音楽って、1ファイル10秒なんですよね・・・
長い音楽ですと、10秒のファイルを連続して再生することに
なると思うんですが・・・
やり方っていくつかあると思うんですが、
一番単純で簡単なのは、
llPlaySound("file01,1);
llSleepScript(9.9);
llPlaySound("file02",1);
llSleepScript(9.9);
:
:
:
と、順番に再生してくことかと思いますw
(効率とか別にして・・・w)
ただ、この方法ですと、途中で音楽を止めるのに、難があるんですよね^^;
音を止めるのは、llStopSound()を使うんですが、
上記の方法ですと、どっかでllStopSound()を入れても
再生中、ほとんどの時間、スクリプトがスリープしてるので、
効果がないっていうか・・・効かないんですよね・・
touch_start()で、再生・停止をさせようとしても、
再生したあと、やっぱりスクリプトがスリープしてる時間がほとんどなので、
停止しようとタッチしても、効かないんですw(これは実験しましたw)
また、4分の音楽なら、単純計算で24ファイル。
そのまま上記の方法で書いたら、ズラーっと下に長いスクリプトになってしまい、
見た目もよろしくない・・・
とゆうことで、
使うのは、llSleepScript()ではなく、
llSetTimerEvent()を使っていますw
たえば、llSetTimerEvent(9.95);とかして、セットになるtimer()イベントは
以下のように書いてます。
この例ではllPlaySound()ではなく、llTriggerSound()使っていますww
i はグローバル変数です
これだけで・・・file01~file24までの再生が可能です
途中で止めたいときは、
どっかで条件を入れて
llStopSound()を反映させると止まりますw
他にも、ノートカードを読んで、リストにして・・・とか
いろんな方法ありそうですけどね・・・
お求めの応えになってますでしょうか^^;
こんな感じでやってますw
あくまでも私のやり方ですので、他にもっといい方法があるかもしれませんので、
その点ご留意下さいませ^^;
timer()
{
llTriggerSound("file0"+(string)i, 1);
i = i + 1;
if(i <=24)
{
llSetTimerEvent(9.95);
}
else
{
llSetTimerEvent(0);
llStopSound();
}
}
<追記>
上記、スクリプト中真ん中あたりのllSetTimerEvent()は不要ですねw
上記、スクリプト中真ん中あたりのllSetTimerEvent()は不要ですねw
timer()
{
llTriggerSound("file0"+(string)i, 1);
i = i + 1;
if(i >25)
{
llSetTimerEvent(0);
llStopSound();
}
}
追記の方、00-026を再生する予感がw
返信削除想定した上での名前生成だと、ファイルが存在しない時はエラーに
なるのとスクの融通効かないので、invから読み込んでlist化してlistか
ら名前拾って再生ってのがやっぱ良いかもね。名前を直接拾って再生
とはしないのは複数曲を考慮とか、getlistlenghから再生時間取得やら
ポーズ機能用だわな。
まあ、入れ替えだの複数の曲を再生だのって色々機能を入れないのな
らシンプルなのが一番だけどね。
まーや さん^^
返信削除あ・・・w た、、確かに・・w そのあたりは・・( ̄b ̄) シーーッ!!ww
実はあまりlistは使ったことがないとゆう・・・私www
そうなんですよね、ベストはリストに入れて・・・ってやろうとしてたんですが・・・めんどくさくなって・・・( ̄ー ̄; ヒヤリ 1曲だし・・・いいかーってwww