0

極端な深度管理に関するプロジェクトを救助するのに助けが必要です。アイデアが足りません!

このプロジェクトは、さまざまなサイズのボックスを積み重ねることに関するもので、各ボックスは等角であるため、奥行きが出てきます(このボックスは、そのボックスの前に織り込む必要がありますが、2つのボックスの上と下などに織り込む必要があります)。 !)

現状のプロジェクトは次のとおりです。

http://clearlytrained.com/depth/

ボックスをドラッグして、グリッドスペースが緑色の場合はグリッド上を移動できます。1つのグリッドスペースの高さの2つのボックスを取得する場合は、次に並べて配置し、幅の広いボックス(2x2)を取得して配置します。両方にわたって(つまり、下の2つのボックスのギャップは、上に配置したボックスの中央にあります)、右下のボックスの深さが、上のボックスよりも高くなっていることがわかります。なぜこれが発生するのかは完全に理解していますが、グリッドを順番にスイープしても、現在の状態である程度発生します。

現在深度を並べ替えている方法は、グリッド配列をスイープすることです。グリッド配列は、行と列をスイープする方向に基づいて、画面上のすべてのボックスの名前を格納し、各ボックスの深度を設定する順序を取得します。問題は、ボックスが6グリッドスペースを占める場合でも、深さを6回設定しないことです。つまり、配列内のインスタンス名に初めて到達したときにのみ設定します。したがって、スイープしている場合は、下から上、左から右のグリッド。物理的に別のボックスの下にあるボックスですが、さらに右に行くと、常に奥行きが大きくなります。良くない!

これを修正するために私が見ることができる唯一の方法は、最初のX値とY値のある種のボックス間の比較を理解し、ある種のdouble for loop / if statemenet条件を設定し、多かれ少なかれ、各ボックスをプログラムで手動で配置することです。新しいボックスを移動または配置するたびに深さ。したがって、複雑さは、ボックスインスタンス名の順序で深さを設定することから、このボックスを1つおきのボックスと比較し、次に1つおきのボックスを1つおきのボックスと比較し、深さを積み重ねる必要がある実際の順序を考え出すことです。場合によっては、左から右、下から上、そして左から右に戻ることがあります。滑らかなパターンはありません。

提供されているリンクをいじってみてください。他に質問がある場合や詳細情報が必要な場合はお知らせください。必死です。

4

1 に答える 1

0

すべてのボックスを配列に追加し、X と Y の両方の値 (タイル X と Y) で並べ替えます。大規模なセットではないので、パフォーマンスについて心配する必要はありません。

X で並べ替え、X が同じ場合は Y で並べ替えます。明らかな何かを見逃していない限り、それで解決するはずです。

于 2011-10-05T15:19:59.233 に答える