- ベストアンサー
FLASHでのアニメーション制作で秒数が狂います。
FLASH CS6で15秒のアニメを作っています。 フレームレート29.97fpsで、フレーム数が450です。 モーショントゥイーンでキーフレームをつくるたびにだと思うのですが、 再生するとトータルの秒数が増えていました。 フレームレートもフレーム数も変わっていません。 再生すると最後に15sとなるのですが、途中のカウントが瞬間的に増えたり減ったりするので実際は15秒以上の再生時間になるのです。 説明が難しくうまく伝えられないのですが、 原因はなんでしょうか? はじめてのflash制作で困っています。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
原因とかそういう概念(思考パターン?)など普通には何もなくて 設定フレームレートというのはリミッターみたいなものですから 例えば 30fps 設定にした場合 再生速度が1秒間に30フレームまでに制限されるというような設定をしたのと同じようなことに過ぎません。 (ただし,HTML に wmode="transparent" で貼り付けると,ブラウザによっては設定フレームレートより早く再生される場合がありますが,これは例外です。) ですから 画面描画やスクリプト処理が PC の CPU や GPU を圧迫すれば どんどんフレームレートは下がります。 フレームレートが遅くなったり不安定になるのは 当たり前で普通の現象です。 昔は(今でも)「Flash は重い」と言われてましたが 正にこれが処理落ちによるフレームレートの低下現象です。 昔は(今でも)描画処理などは GPU でなく全て CPU 任せでしたし 昔の PC は CPU や メモリ などが少ないものが多かったですから (私など CPU:233MHz メモリ:64MB のPCで Flash を作ったり見たりしてましたから) カクッ... カクッ... としか動かない Flash を見かけることは多かったです。 自己満足に浸っている自己中な作者が公開している Flash に重いものが多かったです。 === === === 第一の回避策としては アルファ(透明/半透明)やフィルタ(ぼかしフィルタなど)の使用をなるべく控えて PC の CPU や GPU に負担をかけないようにしたり ActionScript でループ文を使用したり 何でも ENTER_FRAME イベントで動作させるのをやめるとか とにかく クライアントPC をいたわるような気持を常に持ち続けながら 作品の作成に携わるということが大切でしょう。 また, 例えば 30fps を出すのが難しそうでしたら 元から 15fps などに下げた設定で作る(クライアントPCに無理をさせない)というのも回避策になります。 あと, SWF を HTML に貼り付けるときのタグで quality="autohigh" にするなどして 再生速度を優先して画質を下げるようにするとか, または上にも少し書いたように wmode="transparent" で貼り付けるのも1つの方法だと思います。 その他,裏技的なことですが, 無音の短い mp3 でも用意して その音をライブラリなどに読み込んでレイヤーに配置し そのレイヤーに配置した音のプロパティで 「同期」の項目を「ストリーミング」にしておくのも1つの手です。 ※【添付図】↓ この「同期:ストリーミング」設定は 本来アニメーションと音をシンクロ再生させる設定です。 つまり フレームレートの低下で, 音だけが普通に再生されて アニメが取り残されるのを防ぐ設定です。 (いっこく堂の衛星放送のような現象が起こるのを防ぐ設定) この設定にしておくと フレームレートが低下した場合コマ飛ばし(フレーム飛ばし)をして 無理矢理,音にアニメを合わせる再生になります。 ですから カタカタと不自然なアニメになる場合もあります。 この設定にした音を1つでも入れておくと 実際に音が鳴っている鳴っていないにかかわらず, ムービー全体の再生が設定フレームレートに近い状態になります。 あまり良い方法とは言えませんが 裏技的で強引なフレームレート維持方法です。 === === === 兎にも角にも フレームレート設定は「だいたいの目安」「おおまかなリミッタ」に過ぎないと思った方が良いです。 アニメーションなどの内容や クライアントPC の性能や閲覧状況などによって大きく変動します。 それを怪奇現象や不具合と思うのではなく, 普通で当たり前の現象だと思って作成すべきでしょう。
お礼
詳しく説明いただきありがとうございます! 大変わかりやすかったです。