0

as3 で深さを設定する方法を取得しますが、as2 では、数値を使用して複数の「深さポイント」を開始できます。as3 では、このオブジェクトをそのオブジェクトよりも高い/低い深度に設定するだけです。問題は(ユーザーが任意の順序でグリッドに配置できるアイソメトリック ボックスのスタックを処理する場合)、すべての要素に他のすべての要素がどこにあるかを認識させるという追加の複雑さに対処したくないことです。適切に調整します。

私がやろうとしているのは、6 x 6 グリッドの各列に 1 つずつ、合計 6 つの深度番号/位置を設定することです。したがって、列 1 のすべてはたとえば 500 で深さの配置を開始し、列 2 のすべては 1000 で深さを開始し、列 3 は 1500 などになります。

そうすれば、2番目にオブジェクトを特定の列に配置すると、他の列の周囲のすべてのアイテムの下に隠れたり、上に配置されたりします。これは、15個の異なるサイズのボックスがどこにあるのか、どのようにそれらは互いに関連しており、どの深さの順序で進む必要があるかを判断します。

何か案は?as3 は、深さを特定の数値に設定する機能を削除したようです:p

4

1 に答える 1

0

アプローチは単純化できます。基本的に、3 つの「コンテナ」クリップを作成し、順番に追加します。最後に追加されたものが最上位です。

おまけ: 並べ替えたい場合は、任意のクリップ (既に追加されているものも含む) で addChild() を呼び出すことができ、そのクリップが一番上に移動します。

//// IMPORTANT STUFF ////
import flash.display.Sprite;

var top:Sprite = new Sprite;
var mid:Sprite = new Sprite;
var bot:Sprite = new Sprite;

addChild(bot);
addChild(mid);
addChild(top);

//// END IMPORTANT STUFF ////


// Move Stuff so we can visualize how this works.
// Then add some boxes so we can see what's going on.

mid.x = 20;
mid.y = 20;

bot.x = 40;
bot.y = 40;

// Add Top box
var t:Sprite = new Sprite;
t.graphics.beginFill(0xFF0000);
t.graphics.drawRect(0,0,100,100);
top.addChild(t);

// Add Middle box
var m:Sprite = new Sprite;
m.graphics.beginFill(0x00FF00);
m.graphics.drawRect(0,0,100,100);
mid.addChild(m);

// Add Bottom box
var b:Sprite = new Sprite;
b.graphics.beginFill(0x0000FF);
b.graphics.drawRect(0,0,100,100);
bot.addChild(b);
于 2011-09-30T16:50:18.133 に答える