2011-09-30 52 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);