2012-02-21 3 views
5

オフステージの要素はどのように処理されますか?フラッシュのオフステージのディスプレイオブジェクトはまだゲームの速度を落としていますか?

明らかに、Flashは実際にそれらをレンダリングしません(画面上のどこにも表示されないため)が、まだ存在しないままレンダリングするプロセスであり、画面?

または、Flashはレンダリング可能な領域に入らない要素をインテリジェントに無視しますか?

DisplayListからオブジェクトを削除して手動で管理し、終了時に追加してステージに追加するか、これは無関係でしょうか?

+1

簡単なテストを書くことができます。彼らはまだレンダリングされていませんが、彼らはまだ階層にあり、アニメーション化、スクリプトの実行、および大量のイベントのディスパッチといったいくつかの厄介なことをしているかもしれません。 –

+0

私はオブジェクトの実際の描画がパフォーマンスのほとんどを食べると思うので、彼らが問題ではないオフステージにいるとき。 Valentinが言ったように、彼らがまだ "スクリプトを実行したり、たくさんのイベントを送信している"とき、彼らは間違いなくゲーム全体を遅くしています。彼らが舞台に戻ってこない場合は、それらを破壊してください。もしそうなら、それらが再び現れるまで "一時停止"してみてください... – pkyeck

+0

いくつかのテストを書いて、オブジェクトを一杯にして、画面には、Flash Builderプロファイラを使用して、ボトルネックを見つけることができます。 私はそれらが画面外に出るのを見てテストし、またremoveChild()をテストし、スクリーンから外に出てから表示しますが、アルファ0は使用しません。 – Neil

答えて

2

はい、ゲームの速度が遅くなっています。

初期の実験の1つでは、同じ画面にすべて表示されるわけではなく、地図の周りに多数のNPCが散在するサイドカーゲームを開発しました。私はまだものを計算しなければならなかったが、彼らは画面にはなかった。関連性がない場合(単に「カメラ」に関連してXをチェックすることによって)、表示リストからの削除を処理したときのパフォーマンスが大幅に向上しました。繰り返しますが、私はそれらに付随する可能性のある追加のコードやイベント、ムービークリップの単純なグラフィカルな子どもたちについては言及していません。

私の経験上、ベストプラクティスはオブジェクトをビットマップで描画しています。もちろん、ゲームに深入りしているのであれば、これは無関係かもしれませんが、投資する時間があれば、これは2Dゲームに関してAS3を最大限に活用する最良の方法の1つです。私は、ビットマップとAS3について8bitrocketで最大のチュートリアルを見つけました。 http://www.8bitrocket.com/books/the-essential-guide-to-flash-games/私はこのテーマについて詳しく説明していますが、私はここで話題に行くと思います。

+0

良い背景 - ビットマップに関する優れたアドバイス。これは私がかなり長い間してきたことです。 – Marty

0

一部の表示オブジェクトがステージ領域外にある場合でも、それらは実行されます。アニメーションが再生されている場合は、パフォーマンスが低下する可能性があります。

問題が発生するのはなぜ、使用しないアイテムをステージエリアの外に置く必要があるのでしょうか?より速い読み込みのためにmovieClipsを 'キャッシュ'する必要がある場合は、コントロールが決して動かないキーフレームにロードします。たとえば。フレーム1に表示する表示オブジェクトをロードし、フレームのアクションパネルにstop()を配置し、キーフレームにし、フレーム2で未使用のアニメーションをロードします。フレーム1にはstop()があるので、コントロールはフレーム2には決して行きませんが、表示オブジェクトはキャッシュされます。

未使用のdisplayオブジェクトにコードがあり、メインのゲームコンポーネントと共にコードをロードする必要がある場合は、未使用の表示オブジェクトのフレームにstop()を入れてアニメーション化しないでください。