3

私はアニメーションを再生する15fpsのAS2ベースのオンラインシステムを持っていました。AS2swf形式で外部から読み込まれるアニメーションは数千あります。

AS3を使用して60fpsで実行するようにメインシステムをアップグレードし、それに応じて、独自の埋め込みアニメーションキーフレームを更新して、通常の60fpsで再生されるように4倍の間隔で配置しました。

外部ソースからロードされた何千もの個々の15​​fpsAS2アニメーションをすべて更新することはできないため、そのまま再生する必要があります。実際、バイトストリームヘッダーをハックして、AS3としてロードするように強制します。ロードして正常に再生されますが、メインのムービーは、再生中に子ムービーに一致するように一時的にフレームレートを下げているようです。そのため、独自のアニメーションが非常に遅く表示されます(キーフレームが60 fpsで表示されるように更新された後、15 fpsで再生されます)。

最初はビデオファイルの処理が遅いと思っていましたが、子クリップが遅いために、プレーヤーがフレームレートを一時的に下げて一致しているように見えるようになりました。誰かがこの一時的な減速を確認したり、回避策を提案したりできますか?

編集:アニメーションには「ストリームに同期」されたサウンドがあり、親ローダーのフレームレートを通常維持する場所でプレーヤーの速度が低下する例外について読んだことをぼんやりと覚えています。

4

1 に答える 1

1

Flash はフレームに間隔を空けず、コンテナーは 1 つしかないため、Flash はすべてのフレーム レートに一致する必要があります。

解決策は少し難しく、アクション スクリプトでフレーム レートを制御します。私はあなたにアイデアを説明します:

  • タイマーと配列を作成する必要があります。タイマーの間隔は、ロードされたファイルのフレームレートになります。1 秒あたり 15 フレームの場合、秒単位の間隔は 1/15 になります。

  • ファイルをロードし、停止し、配列にプッシュするローダーを作成する必要があります。

  • タイマーが作動するたびに、すべての Array オブジェクトがループnextFrameされ、それぞれが実行されるため、同じフレーム レートで多数のファイルをメイン ムービーとは異なるものにすることができます。

それだけです。これは、内部フレーム レート コントローラーの CPU 消費量が少ないモデルです。このモデルは同じフレーム レートのファイル用であることに注意してください。変更すると、異なるフレーム レートでも同じことができます。

もう 1 つの解決策は、フラッシュ内のすべてのファイルを同じフレーム レートに変更することです。この解決策が最適だと思います。

于 2012-09-06T23:22:01.793 に答える