久方ぶりの質問になります。 ただいまDxlibの外で作成したムービーを読み込んで プログラム内で再生、停止・再開するものを作っているのですが、 今までムービー周りの関数は殆ど使ったことがなかったため、以下のサンプルコードをベースに、 「ムービーの再生中にボタン入力があった時にムービーの再生を中断してシーンを切り替える。 さらに後でまた再生していたムービーへ戻って来て、停止した時点から再開する。」 という趣旨のコードを作っていました。 -------------------------------------------------- int MovieGraphHandle ; MovieGraphHandle = LoadGraph( "??.mpg" ) ; PlayMovieToGraph( MovieGraphHandle ) ; while( ProcessMessage() == 0 ) { DrawGraph( 0 , 0 , MovieGraphHandle , FALSE ) ; WaitTimer( 10 ) ; } -------------------------------------------------- 想定する仕様の実装はできているのですが、 今扱っているのが予め音声の付いたムービーファイル(avi)でして、 「DrawGraphで描画する」という時点で不味い予感はしたのですが、実行してみると 見事に「映像はちゃんと止まる、再開もできる」が、「ムービーの音声だけは止まらずに垂れ流し」状態に なってしまい困ったことになりました。 ムービー関連の仕組みをよく理解していないので、 DxLibのソースを眺めてみたりはしているの(この時のムービー音声のサウンドハンドルはどこに?…etc.)ですが ちょっと所用で急ぎ完成させたいプログラムなので、 代替の方法などアドバイスを戴ければと思いました。
お久しぶりです( 記録を見ると約6年ぶりですね…! ) お急ぎという事で、もう既に遅いかもしれませんが少しだけ早めにご返答いたします 動画関連の関数は PlayMovieToGraph 以外に 4つ関数があります PauseMovieToGraph ムービーグラフィックの動画再生を一時停止する https://dxlib.xsrv.jp/function/dxfunc_graph3.html#R14N3 SeekMovieToGraph ムービーグラフィックの動画の再生位置を変更する https://dxlib.xsrv.jp/function/dxfunc_graph3.html#R14N4 TellMovieToGraph ムービーグラフィックの動画の再生位置を得る https://dxlib.xsrv.jp/function/dxfunc_graph3.html#R14N6 GetMovieStateToGraph ムービーグラフィックの動画の再生状態を得る https://dxlib.xsrv.jp/function/dxfunc_graph3.html#R14N5 ムービーの再生を一時中断されたい場合は PauseMovieToGraph を使用してください ( 中断したムービーの再生を再開する場合は PlayMovieToGraph を再度使用してください )
管理人様、どうもお久しぶりです。 GUIアプリを最近作っていなかったので、本当に久々です。 最初はムービーハンドルをDrawGraphをしなければ止まるじゃないか…と思ってましたが、 止める時にPauseMovieToGraphで明示的に止めなければいけなかったのですね。 PlayMovieToGraph以外の関数の使い道がピンと来てなかったので、納得しました。 4つの関数をシーンの切り替え前後で組み込んでみたら、 しっかり音も止まってくれる、再開時に音声も停止時点から再開するようになりました。 週末までに間に合えばよいので、(返信が来る時間は夜中だろうと予測して投稿しました…) 何とか目的の実装に辿り着きそうです。 どうもありがとうございます。