ページ 11

音楽を停止した位置から再生するには・・・?

Posted: 2009年11月04日(水) 17:22
by トゥル太郎
お世話になっております。
現在、東方っぽいゲームを制作しております。
一時停止で困ったことがおこってしまいました。

一時停止すると音楽を停止し、一時停止解除時に、停止した位置から再生したいと思っています。
今行っている方法は
一時停止すると、
流れている音楽をStopSoundMem(area.bgm.handle);を行って停止します。
一時停止を解除すると
PlaySoundMem(area.bgm.handle,DX_PLAYTYPE_LOOP);を行って、
音楽を再生してみたのですが、最初から再生されてしまいました。

一時停止を解除すると、音楽が停止した位置から、再生されるという風にするにはどうすればいいのでしょうか。

DXライブラリのリファレンスを見ましたが、途中位置を取得するという関数が無かったので
ヘッダファイルを覗いてみると、それらしきものがありましたが、これらを使用するのでしょうか。

extern int SetSoundCurrentPosition( int Byte, int SoundHandle ) ;
// サウンドハンドルの再生位置をバイト単位で変更する(再生が止まっている時のみ有効)

extern int GetSoundCurrentPosition( int SoundHandle ) ;
// サウンドハンドルの再生位置をバイト単位で取得する

extern int SetSoundCurrentTime( int Time, int SoundHandle ) ;
// サウンドハンドルの再生位置をミリ秒単位で設定する(圧縮形式の場合は正しく設定されない場合がある)

extern int GetSoundCurrentTime( int SoundHandle ) ;
// サウンドハンドルの再生位置をミリ秒単位で取得する(圧縮形式の場合は正しい値が返ってこない場合がある)

Re:音楽を停止した位置から再生するには・・・?

Posted: 2009年11月04日(水) 18:49
by Dixq (管理人)
仰る通りです。
私の知る限りDXライブラリには一時停止なる機能が無いので、必要ならば仰る関数で自作するしかないと思います。
おわかりになるとはおもいますが、停止する時に今の再生位置を記憶し、
再開するときはそこにあわせて再生すればいいわけですね。

Re:音楽を停止した位置から再生するには・・・?

Posted: 2009年11月04日(水) 18:57
by チルチル
ん?勘違いだったらすみませんが

PlaySoundMem( BGM , DX_PLAYTYPE_LOOP , FALSE );

で止めた所から再生できると思うのですが・・

Re:音楽を停止した位置から再生するには・・・?

Posted: 2009年11月04日(水) 19:07
by トゥル太郎
Dixq様、チルチル様
お二人とも早速のご意見ありがとうございます。
チルチル様のPlaySoundMemを使用すると途中から再生することができました。
本当にありがとうございます。
完成しましたら、この掲示板で公開させて頂きたいと思います。

Re:音楽を停止した位置から再生するには・・・?

Posted: 2009年11月04日(水) 19:22
by Dixq (管理人)
な・・に・・!

そんなところに隠れたフラグが。
どうもすみませんでした(_ _|||)

今までずっと自作してましたorz

Re:音楽を停止した位置から再生するには・・・?

Posted: 2009年11月04日(水) 19:46
by トゥル太郎
おぉ…自作とは恐れ入ります。
非公開関数を扱える技術が自分もほしいところです。