動画ですが、クリックすればスキップできるように設計しています。
動画再生はリファレンスページにあった PlayMovieToGraph とそのサンプルコードを改造したもの使っているのですが、再生している動画が終了しても次に進まず止まったままです。ただクリックすれば次に進んでくれます。
・質問・
何も(クリック)せずに動画の再生が終われば自動的に次に進むようにしたいのですが、方法としては時間経過で次の処理に進むようにするしかないのでしょうか?
動画の再生状態を得る(GetMovieStateToGraph)のは停止中か再生かであって、終了とは関係なさそうで……
一応、現在実験しているコードを載せておきます。
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);;;
SetGraphMode(1280, 720, 32);
int MovieGraphHandle;
if (DxLib_Init() == -1) { return -1; }//DIRECT X初期化
// ムービーファイルをロードします。
MovieGraphHandle = LoadGraph("aaa.mp4");
// ムービーを再生状態にします
PlayMovieToGraph(MovieGraphHandle);
while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0) {
if ((GetMouseInput() & MOUSE_INPUT_LEFT) != 0) { //クリック検知
DeleteGraph(MovieGraphHandle);
//実験のため処理終了すれば次に進んだと仮定。
DxLib_End();
}
else {
// ムービー映像を画面いっぱいに描画します
DrawExtendGraph(0, 0, 1280, 720, MovieGraphHandle, FALSE);
// ウエイトをかけます、あまり速く描画すると画面がちらつくからです
WaitTimer(17);
}
ScreenFlip();
}
// 読み込んだムービーファイルのグラフィックハンドルの削除
DeleteGraph(MovieGraphHandle);
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}