« 進化するスパム | ホーム | WindowsXP ProでBuddyAPIのファイル操作関連が使えない »
2005年6月20日
Flashの再生レートを変化させよう
Flashって再生レートを変化させられない。これは、大昔からの決まり事みたい。
Directorを使えば無理矢理に再生レートを変化させることができるけど、Flash単体ではちと難しかった。
ある仕事で「変化させられないか?」と聞かれたのだけど、その場で即答できなかった。悔しい。
で、作ったのが上のやつ。
真ん中のムービークリップの再生速度をコントロールできるようになってます。再生レートは12fps固定だけど、100fpsぐらいでブン回したりできるようになってる。
ポイントとなるのはsetIntervalってやつで、ムービー内で個別に動作するタイマーを使って、擬似的にフレームをコントロールしてる。たとえば12fpsで動作させたいなら、インターバルを1000/12秒に設定。それを基準に倍速にするなら1000/24秒に。
ボタンで速度をアップデートするごとに、新しくsetIntervalさせてます。
ところが、ちょっと問題があって、スロー再生させた場合はどうしてもカクカクしちゃう。
これを自然に見せるために、あらかじめ一番スローで再生してもスムーズになるように、対フレームレートで遅めになるようなムービーを作ってある。
0.5倍が最低速度の場合、あえて0.5倍速を基準のムービーを作り(500フレームの長さのが標準としたら、1000フレームにしておく)、標準再生は表示上は「標準速」であっても、数値上は2倍って事にしておく。これで、表示上0.5倍にしても、数値上は1倍なので、カクカクしなくなる。
スーパースローカメラと同じ原理だ。
これで、擬似的に再生レートをコントロールさせることが可能になる。
FlashでもDirectorでも、intervalは便利ちゃんだ。
トラックバック(0)
トラックバックURL: http://okamot.com/mt/hage-tb.cgi/771
コメントする