1

Flash では、Flash IDE で描画された MovieClip を SWF に埋め込み、クラスパスを使用してこのインスタンスを作成できます ( car = new Car(). そのような埋め込みアセットは、コード実行時間またはレンダリング時間に関して、描画 API (つまり、 moveTo、 ) を使用するより遅いですか?lineTo

私はインターネット上のあらゆる場所を検索しましたが、この問題について詳しく説明するものは何も見つかりませんでした. 「コード実行を高速化するために描画 API を使用する」というこの1 つの SO 投稿を除いて。

もちろん、ビットマップにレンダリングして後でこれを再利用するのが最も高速ですが、ある時点でベクター グラフィックスをビットマップにレンダリングし、上記のいずれかの方法を使用する必要があります。

どちらが速いか、そしてその理由を知っていますか?

4

1 に答える 1

1

ソースに関係なく、すべてのベクター アセットは、表示リストのレンダリングを通知するステージ無効化で描画​​および再描画する必要があります。

Flash Pro のアートボードによるオーサリング ツールが大幅な最適化につながるとは思えません。タイムライン レイヤー要素グループ、影、グラデーション、および角丸四角形などのプリミティブなどの要素は、見た目よりも複雑に処理される場合があります。同様に、鉛筆ツールで作成された線は、ブラシ ストロークよりも少ないメモリで済みます。

Flash Catalyst と同様に、Flash Pro は各ベクターを個別にレンダリングするため、複雑なオブジェクトは公開アプリケーションのパフォーマンスを大幅に低下させる可能性があると思います。複数回出現する要素にはシンボルを使用し、要素をグループ化し、タイムライン レイヤーは変化する要素と変化しない要素を分離する必要があります。

Flash Player 10 および AIR 1.5 では、新しい描画 API が提供されました。これにより、コードの実行量が減り、パフォーマンスが向上します。これらの機能には次のものがあります。

  • drawPath()
  • drawGraphicsData()
  • drawTriangles()

前述のように、cacheAsBitmap翻訳のパフォーマンスを向上させることができます。ただし、スケーリングまたは回転すると再描画されます。

ラスター ビットマップ アセットは、ほとんどの場合、最高のパフォーマンスを発揮します。アニメーション用のブリッティング/ビット ブリットやビットマップ スプライト シートなどの手法は、ベクター描画よりも優れています。

私のアプリ内で、私がよく実装する手法は、この StackOverflow の投稿で示されているように、ベクター アセットのオフステージ レンダリングです: AS3 Blitting - Copy Pixels gets some of the source image .

このメソッドを使用すると、ベクター アセットをスケーリングできます。ただし、ビットマップのみが表示リストに追加されます。

Shapeグラフィックス レンダリングのパフォーマンスに固有のものではありませんが、動的クラスを使用するかSprite、動的クラスよりもわずかにパフォーマンスが向上することに注意してくださいMovieClip

于 2013-05-02T03:03:34.960 に答える