これは「固有の十分な」質問に該当するかどうかはわかりませんが、私はそれがあまりにも具体的で既に回答していることを発見しました。 JavaScriptを使用してブロック表示スタイルのdivで地図を動的に作成しようとしています。遅れを防ぐために、ユーザーが1つのスペースをすべての方向に移動するだけでなく、もはや表示されない行/列を削除するときに、ユーザーが「カメラを動かす」ように、要素を作成して破棄したい。divを一度にいくつかレンダリングするように操作するにはどうすればいいですか?
このように、データ専用の配列と地図全体を格納する配列の2つの構造体と、ユーザーが見ることができる平面を表す別の構造体があり、divで構成されています。
最初に表示される要素が実際のマップの最初の四角ではなく、実際に同じ中間を共有する領域であるため、地図が最初にレンダリングされるときに問題が発生します。参考のために、以下の画像を参照してください:
for (var n = 0 ; n < map_xy.lenght; n++){ // Will repeat by the number of cells
var newtile = document.createElement('div');
newtile.className = "map_cell";
newtile.id = n.toString();
};
、私の質問は:プログラムが実際にそれをレンダリングすることなく、マップ全体を知っているように、どのように私はそれを作ることができますか?。これは私が必要とするものです。隣接するセルや他の同様のものを検索する地形の生成があります。
私はこれが正しいaproachであるかどうかわかりませんが、私の目標は、ユーザーが1000 x 1000のセルマップをリクエストしたときに、彼女の40〜40〜 "ウィンドウ"、ブラウザがクラッシュしないように。
あなたのお手伝いをしていただきありがとうございます。現在の状態が不明確な場合は、これを編集します。
仮想リストの作成方法を調べることができます。マップ全体のセルは、位置情報(どこに表示されているか)を持つJavascriptオブジェクトとして、おそらく配列として格納されます。次に、可視ウィンドウを計算し、そのウィンドウ内にあるセルを特定する必要があります(スクロールがスムーズになるようにいくつかのバッファを加えたもの)。次に、それらのセルだけをレンダリングするようにDOMを更新します。更新のパフォーマンスを向上させるために、仮想DOM実装を参照することもできます。 – Bill