連続ですがDirectMusicについてです

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Suikaba
記事: 194
登録日時: 9年前

連続ですがDirectMusicについてです

#1

投稿記事 by Suikaba » 9年前

連続で質問して申し訳ありません。
DirectMusicを使って音を鳴らしているのですが、再生が終了したかどうかがわかる関数などありますでしょうか。
資料が少なくて困っております。わかる方がいればよろしくお願いします。

ちなみに、DirectX9とC++でVisual C++ 2008 使ってます。

アバター
lriki
記事: 88
登録日時: 9年前

Re: 連続ですがDirectMusicについてです

#2

投稿記事 by lriki » 9年前

一番確実な方法はこんな感じだと思います。

コード:

// 現在の再生時間を取得
MUSIC_TIME now_time;
mSegmentState->GetSeek( &now_time );

// 全体の再生時間を取得
MUSIC_TIME end_time;
mSegment->GetLength( &end_time );

if ( now_time == end_time )
{
	// 再生が終了している
}
ちなみに IDirectMusicPerformance8 の中に IsPlaying というメソッドがありますが、
これを使えば現在音が聞こえているかどうかを簡単に判定することができます。
http://msdn.microsoft.com/ja-jp/library/cc356058.aspx

ただ、msdn のヘルプにもあるように「再生終了」を判定するのではなく
「音が鳴っているかどうか」を判定するので、場合によっては不具合がでるかもしれません。
(あと、どういうわけかノートPCで実行したとき IsPlaying が入ってるだけで処理落ちしたことがあります。)

ゲームで実装するのでしたら面倒でも GetSeek と GetLength を組み合わせて判定するのが無難かと思います。

Suikaba
記事: 194
登録日時: 9年前

Re: 連続ですがDirectMusicについてです

#3

投稿記事 by Suikaba » 9年前

>>梨樹さん

ありがとうございます。ここら辺の資料みつけにくいですね・・・

それで実装してみます。本当にありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る