まず最初に、ここでのコンテキストは、 StarlingFrameworkを伴うActionscript3.0(IDE:Flashbuilder)であると言います。
そこで、プラットフォーマーなどに使えるタイルマップを作りたいと思います。
800x600ピクセルのステージで8x8ピクセルのタイルを使用したいのですが、問題は、フレームレートを大幅に下げることなく、これらの7500以上のタイルオブジェクトをステージに追加する方法がわからないことです。
パフォーマンスの低下は、各Tileオブジェクトの初期化ではなく、各タイルをステージに追加することによるものであることがわかりました。
具体的な情報はあまり提供していませんが、パフォーマンスを損なうことなく、何千もの静的オブジェクトをステージに描画するための標準化された方法があるかどうかを求めています。方法があるような気がしますが、まだ見つけていません。
アップデート:
あなたの親切な助けのすべての後、私は素晴らしい解決策と思われるものを見つけました。最初は、copyPixels()とdraw()を使用してAmyのソリューションを実装し、マップ全体に対して1つの大きなビットマップデータを作成してから、それを画面にレンダリングしたいと思いました。それから、これに相当するStarlingがあるかどうかを知りたいと思いました。なぜなら、StarlingとNative Flashを混ぜる必要がなければ、すべてがはるかに簡単になるからです。
Amyのおかげで、StarlingのRenderTextureクラスをもう少し調べたところ、「drawBundled()」メソッドと「draw()」メソッドを使用すると、すべてのタイルをRenderTextureに簡単に描画してから、RenderTextureを配置できることがわかりました。画像(Starlingの画像クラス)に追加し、その画像を画面に追加します。
その解決策は、スプライトなどを平坦化することで、私が以前に試したばかげた遅い解決策よりも100万倍高速です。初期化時間の両方で高速であり、renderTextureの画像が画面に表示されている間はフレームレートが低下しないようです。
これでテストしたいのは、ゲームプレイ中にタイルのグラフィックを簡単に更新できるかどうかです。たとえば、水がソース(または何か)から広がり、「Grass」タイルを「Water」タイルにする必要がある場合、RenderTextureとそのイメージは、ラグスパイクやパフォーマンスの一時的な中断なしに外観を変更できます。これをすぐにテストします。
よろしくお願いします!