これを Adobe フォーラムに投稿しましたが、良い回答は期待できません。フラッシュでゲームをしたことがあり、同じ問題に遭遇した人からの助けを探しています。
私の問題を再現する手順:
フラッシュで単純なドット DisplayObject を作成する
dot.graphics.beginFill( color); dot.graphics.drawCircle( 0, 0, 2 ); dot.graphics.endFill();
ドットをフレームに何度もビットマップに描画する
bitmapData.draw( dot, null, null, "normal", null, _smoothing );
- Win32 上のブラウザー、フラッシュ プラグイン バージョンの組み合わせで FrameRate をテストする
予想:
ほとんどの場合、近いフレームレート
観測:
IE7 で Flash10b.ocx(10.0.22) を使用するとフレームレートが 25% 低下し、Flash10c.ocx(10.0.32) を使用するとフレームレートが 50% 低下します。FireFox、Safari、および Mac OSX のプラグインでは、同じ速度低下は見られません。
助けてください:
Internet Explorer で見られるパフォーマンスの問題について、ヘルプ/確認を取得したいと考えています。Adobe と Flash のコミュニティはインターネット上で優れていますが、10.0.32 と 10.0.22 でのムービー再生に関するレポートがいくつかあるだけで、これに関する情報がないことに驚いています。
私の推測では、IE ではフラッシュ プラグインがドロー コールを Win32 に渡しており、これは遅いと思われます。
私の解決策は次のとおりです。
draw を使用して毎回ビットマップに描画する代わりに、描画呼び出しをビットマップにキャッシュし、CopyPixels
. これを行うと、パフォーマンスはブラウザ間で同じで、10% 以内です。
bitmapData.copyPixels(dot.bitmapData,dot.bitmapData.rect,new Point(dot.x,dot.y),null,null,true);
私が使用しているループ:
function enterFrame(e:Event) {
bitmap.lock();
for (var i:int=0;i<particles.length;i++) {
draw(particle[i]);
}
bitmap.unlock();
}
私がもっと知りたい他の「既知の」問題についてのメモ:
- IE では、私のアプリケーションのメモリ使用量ははるかに小さいと報告されています (通常、Flashplayer では 33MB、IE では 16MB)。
- IE では、メモリ ページ フォールトは 10k/秒を超えますが、フラッシュ プレーヤーでは発生しません。
- IE では、stage.invalidate がパフォーマンス ヒッチングの問題を引き起こすようです。
- IE では、ビットマップにぼかしフィルターを配置すると、Flash Player よりも大きなパフォーマンス ヒットが発生します。