DXライブラリのVisual C++です
質問なんですが曲を30秒から60秒のところまでループさせて0秒から30秒にかけては1回だけ流してみたいなことはできますか?
BGMループについて
Re: BGMループについて
最初に1回通して流して、次回から31秒目から音楽を流し始めるという方法で行ったらどうでしょうか?
音楽ファイルを途中から流す関数としてSetSoundCurrentTimeというものがあるそうです。
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ast&no=925
流れとしては、
1. 1度目は通常通り再生。
2.再生終了後SetSoundCurrentTimeで再生位置を決める。
3. 再生する。
4. 2と3の繰り返し。
で出来ると思います。
音楽ファイルを途中から流す関数としてSetSoundCurrentTimeというものがあるそうです。
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ast&no=925
流れとしては、
1. 1度目は通常通り再生。
2.再生終了後SetSoundCurrentTimeで再生位置を決める。
3. 再生する。
4. 2と3の繰り返し。
で出来ると思います。
- bitter_fox
- 記事: 607
- 登録日時: 13年前
- 住所: 大阪府
Re: BGMループについて
int SetLoopPosSoundMem( int LoopTime, int SoundHandle ) ;
こんな関数があるそうです。
http://homepage2.nifty.com/natupaji/DxL ... html#R8N13
再生の流れは、次のようで良いのでしょうか?
0秒から30秒まで再生する。
以下ループ
30秒から60秒まで再生する。
こんな関数があるそうです。
http://homepage2.nifty.com/natupaji/DxL ... html#R8N13
再生の流れは、次のようで良いのでしょうか?
0秒から30秒まで再生する。
以下ループ
30秒から60秒まで再生する。
Re: BGMループについて
>ぬっちさん
ありがとうございます!
でもこれでやると、おっしゃられたように途中から再生されるのは最初だけみたいですね
>bitter_foxさん
ありがとうございます!
まさに望み通りのものだったのですが
>注意!…
この関数でループ位置を設定した場合は、以後 ProcessMessage の呼び出し 間隔を0.2秒以上空けないようにして下さい。(0.2秒以上空け続けると 再生中の音が途切れる現象が発生します)
のところが気になりました
これはどういうことでしょうか?
ありがとうございます!
でもこれでやると、おっしゃられたように途中から再生されるのは最初だけみたいですね
>bitter_foxさん
ありがとうございます!
まさに望み通りのものだったのですが
>注意!…
この関数でループ位置を設定した場合は、以後 ProcessMessage の呼び出し 間隔を0.2秒以上空けないようにして下さい。(0.2秒以上空け続けると 再生中の音が途切れる現象が発生します)
のところが気になりました
これはどういうことでしょうか?
- bitter_fox
- 記事: 607
- 登録日時: 13年前
- 住所: 大阪府
Re: BGMループについて
この関数はWindows環境でのソフトプログラムに付きまとう メッセージループ処理を肩代わりしてくれる関数です。 この関数がなにをしているのか、というのは特に気にする 必要はありませんが、とにかく定期的にこの関数を呼び出して やる必要があります。たいが さんが書きました:>注意!…
この関数でループ位置を設定した場合は、以後 ProcessMessage の呼び出し 間隔を0.2秒以上空けないようにして下さい。(0.2秒以上空け続けると 再生中の音が途切れる現象が発生します)
のところが気になりました
これはどういうことでしょうか?
目安としては60分の1秒に一回程度、用はゲームのループに 一回程度です。この関数を呼び出さないと結果としてシステムが 異常に重くなったり不安定になったりします。
http://homepage2.nifty.com/natupaji/DxL ... .html#R1N3
う~ん、ProcessMessageの項目を見るとうえのようなことが書いてありました。
たぶんですが、Windowsに渡すメッセージが途切れるので不具合が生じると言うことなのでは無いでしょうか?
ちなみに、60分の1秒と言うと、0.016...秒なので、もしも0.2秒以上空けているとゲームとして壊滅しているのではないでしょうか、ですので、気にせずフツーにやってあげればよいと思います。
[hr][追記]
さすがに、注意を無視するのは良くないかもですね。。。DxLibにはそれほど詳しくないのですが。
int SetLoopPosSoundMem( int LoopTime, int SoundHandle ) ;
を、呼んだ後すぐに、
ProcessMessageを呼んであげれば、良いのではないでしょうか?
[修正]
「以後」と言うことは、すべてのProcessMessageについてということですね。
う~ん、だとすると上の方法では、意味がないですね。。。修正します。
最後に編集したユーザー bitter_fox on 2010年12月17日(金) 02:16 [ 編集 1 回目 ]