« 特殊再生系I/Fの追加 | メイン | Visioを注文 »

2004年09月18日

吉里吉里2/KAG3ムービー拡張日誌:: イベント発生の仕様

    

イベント発生の仕様はどのようにしたらよいだろう?
基本的には特定のフレームをセットしたら、再生中にそのフレームに来たら、periodイベントを投げるというものだが、問題はドロップフレームが発生する可能性があると言うことだ
つまり、if( curFrame == eventFrame ) ではなく、if( curFrame >= eventFrame ) としなければならないわけだが、そんなことをしてしまうと、指定フレーム以降毎フレームイベントを投げてしまう。
それならということで、フラグをもうけて1度しか投げないようにすれば良いかというと、そしたら、ループ中にイベントが発生するように設定したら、1回しか投げられなくて、期待したのと違うという事態にもなる。
じゃあ、指定したフレームより前のフレームに移動したらフラグを解除して・・・ と考えていったわけだが、ふと、利用する時はどのようなものが使いやすいか、と言うことについて考えてみた。
そして、そのフレームを通過した時、1回だけしか投げないと言う仕様にしてしまった方がスッキリするのではないかと思った。
たとえば、イベントを投げるとeventFrame=-1;などとして、イベントを投げるフレームを忘れてしまうわけだ。フラグも要らない。
ループなどでは何度も設定しないといけないわけだが、そう言う仕様だと言うことにすれば問題ないだろうし、ループ中で何度も投げることは少ないだろう。
ただ、問題点として、再生中のフレームより小さいフレーム番号にイベントを設定すると、設定した次のフレームにイベントが投げられてしまう。これはちょっと不便だ。
なら、ドロップフレームは10フレームまで考慮し、それよりフレーム番号が大きい場合は無視するように・・・ そしたら、取りこぼしが怖いなぁ。
設定した時のフレームの前後関係を保持し、現在のフレーム番号の方が大きい場合は、イベントが発生しないようにし、設定されているフレームよりも小さいフレーム番号へ移動した時にこの発生しないようにしたものを解除すると言うのが妥当だろうか。
ちょっと複雑になってしまったけど、仕方ないかな。
とりあえず、そんな感じにするか。



投稿者 Takenori : 2004年09月18日 05:57




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