« ムービーをゴリゴリ動かす | メイン | yaneSDK3rdを使ってみる »

2005年08月12日

吉里吉里 ムービー拡張日誌2:: ムービーの制御構造の再検討

    

現在のはコンポジットパターンで作っていて、下図のような構造で制御できる。
20050812sequencial.png
カットはムービーの特定フレーム間を表し、シーケンシャルはコンポーネントを順番に再生する。
シーケンシャルやカットなどの単位でループなどができる。

ただ、現在の構造ではちょっと無理のある部分がある。
現在、上図の単位で言うと、カットがサウンドを持つようになっているのだが、シーケンシャルに入った時に1度だけサウンドを鳴らすようにするってので問題が発生した。
フラグで判断ってのも厳しい。シーケンシャル2の時は1度だけ、シーケンシャル1のループでは、再度鳴らしたい場合などに困る。
とりあえず、シーケンシャルもサウンドを持てるようにしてみたが、はっきり言って美しくない。

で、再考してみた。
サウンドも別コンポーネントにすれば、うまくいくのでは?と思った。
入った瞬間に音鳴らして、すぐに次のコンポーネントを再生するようにすれば、うまくいきそうだ。
しかし、カットの途中、つまり数フレーム遅れで音を鳴らしたい場合にうまくいかない事に気付いた。
そこで、パラレルコンポジットを思い付いた。
ムービーとサウンドを並列に再生されるためのものを作ればうまくいきそうだ。
また、今まではそのコンポーネントに入った時に呼ばれるonEnterで初期化をしていたが、別にIntializeを設け、シーケンシャルのonEnterで呼ぶようにし、そこでフラグなどのクリアをするようにすれば、音を1度だけ鳴らしたいという要求にも堪えられそうだ。

以上のことから再考したクラス図
20050813movman.png

プロパティやメソッドなどの詳細はもう一度よく考える予定。
でも、やっぱりフレームの更新タイミングでイベントを発生させるようにした方が良さそう。
VideoOverlayクラスにonFrameUpdateイベントを追加しようかな。

一番助かるのは、常にフレームの更新タイミングでイベントが発生してくれることだけど、現状のものでは難しいな。
フィルタグラフの中にそれを行うフィルタとムービーのコントロールを行うフィルタを追加すれば出来そうだけど、かなりややこしいことになりそう。
ま、これは保留だな。

ああそうだ。
これの途中で保存すること考えてない。



投稿者 Takenori : 2005年08月12日 23:37




comments powered by Disqus
Total : Today : Yesterday : なかのひと