2

フィルタを使用すると、cacheAsBitmapが自動的にtrueに設定されるのはなぜですか?

フレームごとにステージに描画されるムービークリップがあります。これには再生タイムラインがあり、時々回転するため、cacheAsBitmapをfalseに設定します。しかし、ムービークリップには、cacheAsBitmapをtrueに設定するdropshadow-filterがあります。これは、すべてのフレームをキャッシュすることによってパフォーマンスが大幅に低下することを意味しませんか?

描画されているムービークリップからdropshadow-filterを削除し、代わりにすべての子に適用するのが解決策でしょうか?

4

1 に答える 1

1

ドキュメントから:

cacheAsBitmapプロパティは、ムービークリップにフィルターを適用するたびに(フィルター配列が空でない場合)、自動的にtrueに設定されます。ムービークリップにフィルターが適用されている場合、プロパティをfalseに設定しても、cacheAsBitmapはそのムービークリップに対してtrueとして報告されます。ムービークリップのすべてのフィルターをクリアすると、cacheAsBitmap設定が最後に設定されたものに変更されます。

これは、FlashPlayerがMovieClipのビットマップバージョンを使用して効果を適用する必要があるためだと思います。ほとんどのフィルターはピクセルレベルで実行されます。その後、キャッシュされるため、(などのx/y)さらなる変換がより効率的になります。cacheAsBitmapしたがって、実際には、trueに設定されているかfalseに設定されているかによって違いはありません。

フィルタとタイムラインアニメーションを使用することは、一般的に悪い考えです。ただし、適切な最適化は、アニメーション化されていないオブジェクトに、ディスプレイリストのより深い部分にフィルターを適用することです。さらに良いことに、可能であればラスタライズされた効果でビットマップを使用して、実行時に効果が計算されないようにしてください。

スカウトを使用して、プレーヤーがオブジェクトに対して何をするかを正確に確認することを忘れないでください。

于 2013-03-26T14:16:21.623 に答える