在AS3中设置多个深度层

时间:2011-09-30 15:44:46

标签: actionscript-3 depth

我得到了如何在as3中设置深度 - 但是使用as2我可以使用数字开始多个“深度点” - 在as3中我可以做的就是将此对象设置为比该对象更高/更低的深度。问题是(当处理一堆等距框时,可以由用户以任何顺序放置在网格上)我不想处理每个元素知道每个其他元素所在的额外复杂性,然后适当调整。

我要做的是设置6个总深度数/位置,每个列在6 x 6网格中一个。因此,第1列中的任何内容都会在500处开始深度放置,第2列中的任何内容都将在1000处开始深度,第3列将为1500,依此类推。

这样,第二个我把一个物体放在一个特定的柱子上,它会把自己塞进去,或者把它自己置于其他列中的所有周围物品之上,这对我来说比找出15个不同大小的盒子要容易得多是,它们如何相互关联,然后找出它们需要进入的深度顺序。

有什么想法吗? as3似乎已经删除了将深度设置为特定数字的能力:p

1 个答案:

答案 0 :(得分: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);