2010-12-12 8 views
0

私はすべてのアニメーションを停止することが可能かどうか、 "敵のムービークリップを移動させたり、弾丸を動かす"などの計算をしてから、アニメーションを再開してすべての描画が行われるようにするかすぐに。ムービークリップの描画を直接管理します。 AS3

私のアプリケーションは私のゲームのゲームループに入っています。私が抱えている問題は、スクリーン上に約50人の敵がいることです。これらのプレイヤーはすべて非常に速く動いています。私は配列を歩き、各MovieClipを移動します。いくつかの遅れがあり、私はできる限りそれを取り除きたいと思っています。

AS3が正しく理解されている場合、各MovieClipのX値とY値が変更されるたびに画面に描画されます。アニメーションを止めて、これらの値を設定してから、もう一度起動すると、パフォーマンスがかなり向上すると思います。

+0

あなたの敵と弾丸が非常に複雑なグラフィックを持っている場合、@ Typeoneerrorの提案は役に立ちます。まだ、50人の敵は膨大な数のムービークリップではありません。 movieclipインスタンスをSprite(MovieClipのような動的クラスではない)にネストし、インタラクティブ機能(mouseEnabled、tabEnabled、mouseChildrenなど)をオフにして、フレームレートを改善するかどうかを確認してください。 @ Iainの投稿でたくさんあります:http://blog.iainlobb.com/2010/11/bunnylandmark-new-flash-game-benchmark.htmlソースコードもあります。表示リストの例を見て、それを試してみてくださいあなたがそれからあなたのゲームに学ぶもの。 –

答えて

0

Flashは各フレームを1回レンダリングします。あなたは、フレーム間で必要なものの周りのものを移動することができます。だから、今あなたの敵を動かす方法が正しい方法です。

blittingを使うのは、核オプションのようなものです。多くのパフォーマンスが向上しますが、回転/スケーリングやマウス/インタラクティブビットなどのフラッシュのメリットの多くが失われてしまいます。

ゲームを見ることなく他のポインタを与えるのは難しいですが、一般に、広い領域で透明性を避けようとすると、マスキングが高価になり、フィルタが重く表示されることがあります。

1

パフォーマンスが目標の場合、ビットブリッティングのためにMovieClipsをドロップすることは非常に高価です。基本的に動き、衝突などを計算してからを実行すると、各MovieClipを描画する代わりにビットマップキャンバスに描画します。

ベクトルアートをビットマップに置き換えると、レンダリングも大幅に高速化されます。できるだけ少ないフレーム数で使用してください。ブリッティングの詳細については、8bitrocketをご覧ください。

+0

その問題は、私のアニメーションが信じられないほど高品質であることです。私の芸術家はかなりプロに近いですし、彼はそうすることで自分が望む品質を得ることができません。 –

関連する問題