0

透明な複数の PNG で構成される画像を作成する必要があります。私のソリューションはデスクトップでは完全に機能しますが、モバイル (iOS) でパフォーマンスを向上できるかどうか知りたいです。

私の現在の解決策は次のとおりです。

まず、画像のImageDecodingPolicy.ON_LOAD読み込みとデコード中に CPU と遅延を回避するために、すべての画像をメモリに読み込みます。

Sprite次に、必要な画像を、表示リストに追加されないにロードします。

最後に、すべての画像を 1 つのBitmapDataオブジェクトに合成し、新しく合成した画像を前の画像の上にフェードします。

bitmapData.draw(compositionBufferSprite,null,null,null,rect,false);

前の画像から新しい画像への移行を可能な限りシームレスにする必要があるため、(構成なしですべての PNG をステージ上に配置するのではなく) 画像全体を構成する必要があります。

画像のピクセルデータなどを直接操作してみましたが、性能も作業時間も を使った場合とまったく同じでしたdraw()。私もdrawWithQuality()一緒StageQuality.LOWに使ってみましたが、全く違いがありませんでした。draw()当時の私の結論は、Air はそのビットマップ作業をすべて最適化しており、私が.NET から直接作成するかどうかは問題ではないというものでしたBitmapData

ANE (ネイティブ拡張) を作成することを考えましたが、それによってパフォーマンスが向上するかどうかはわかりません。これまでのところ、ANE は作業負荷を共有するのではなく、ネイティブ API にアクセスするためだけに存在しているようです。

これを改善する方法について何かアイデアはありますか?

4

1 に答える 1

1

この時点ではパフォーマンスの違いは無視できる程度ですが、ブリッティングと呼ばれるプロセスを試す必要があります。

基本的に、PNG のすべての異なるフレームを 1 つの (ビットマップ) スプライト シートに統合し、ビットマップ データをシフトしてフレームを変更します。bitmapData.scroll(x, y)

このブログの著者は、通常のムービークリップよりも大幅なパフォーマンスの向上とメモリ消費の削減を達成することができました。

これは、プロセスをさらに詳しく説明している greensock ライブラリへのリンクです。

于 2013-10-28T01:25:00.750 に答える