11.チュートリアル

1107.動画の再生

 このサンプルはFullSample107というディレクトリに含まれます。
 BaseCrossDx11VS2017.slnというソリューションをVS2017で開くとDx11版が起動します。

 ゲームの待機時間、あるいはタイトルなどに動画を再生できると便利です。
 このサンプルではその方法を紹介しています。
 サンプルを起動すると、以下のような動画が再生されます。WiZの学生さんが作成したものです。

 

図1107a

 

 ここでBボタンを押すとステージが切り替わり、ゲームステージが表示されます。

 

図1107b

 

 ゲームステージでもBボタンを押すと、動画ステージになります。
 動画ステージ上でマウスをダブルクリックすると、一時停止します。Ctrl+Enterで最大画面になります。

動画用ステージの準備

 動画再生するには専用のステージを作成します。サンプルでは、GameStage.h/cppで以下の様なクラスを作成しました。
//--------------------------------------------------------------------------------------
//  ムービーステージクラス
//--------------------------------------------------------------------------------------
class MyMovieStage : public MovieStage {
    //入力ハンドラー
    InputHandler<MyMovieStage> m_InputHandler;
public:
    //構築と破棄
    MyMovieStage() :MovieStage() {}
    virtual ~MyMovieStage() {}
    //初期化
    virtual void OnCreate()override;
    virtual void OnUpdate() override;
    //Aボタン
    void OnPushA();
    //Bボタン
    void OnPushB();
};
 このようにMovieStageの派生クラス、として作成します。
 以下は実体です。OnCreateで、ムービーファイル名を指定しています。冒頭でMovieStage::OnCreate();と親クラスの関数を呼び出すのを忘れないでください。
void MyMovieStage::OnCreate() {
    MovieStage::OnCreate();
    wstring dataDir;
    //サンプルのためアセットディレクトリを取得
    App::GetApp()->GetAssetsDirectory(dataDir);
    wstring strMovie = dataDir + L"testMovie.mp4";
    SetMovieFileName(strMovie);
    //再生
    Play();
}
 この関数の最後にPlay();と呼び出しています。これで再生します。
 Bボタン
//Bボタン
void MyMovieStage::OnPushB() {
    //ゲームステージに移行
    PostEvent(0.0f, GetThis<ObjectInterface>(),
        App::GetApp()->GetScene<Scene>(), L"ToGameStage");
}
 このように、再生そのものはいたって簡単です。
 あとはどんな素敵な動画を作成するか、ですね。皆さん頑張って!!