2011-09-30 55 views
0

我得到如何在as3中設置深度 - 但是使用as2我可以使用數字開始多個「深度點」 - 在as3中,我看起來可以做的就是將此對象設置爲更高/更低比那個對象深。問題是(當處理一堆等距盒子時,用戶可以按照任意順序放置在網格上)我不想處理每個元素都知道其他元素在哪裏的額外複雜性,然後適當調整。在AS3中設置多個深度圖

我想要做的是設置6個總深度數/位置,每個列6×6網格中的一個。因此,第1列中的任何內容都將開始在500處進行深度放置,第2列中的任何內容將開始其深度爲1000,第3列將爲1500,依此類推。這樣,第二我把一個對象放在一個特定的列上,它將自己放在下面,或者把自己放在其他列的所有周圍項目之上,這對我來說要比找出哪裏有15個不同大小盒子,它們如何相互關聯,然後弄清楚他們需要進入的深度順序。

任何想法? as3似乎刪除了將深度設置爲特定數字的能力:p

回答

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);