0

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

我想要做的是设置 6 个总深度数/位置,一个用于 6 x 6 网格中的每一列。因此,第 1 列中的任何内容都将从 500 开始其深度放置,第 2 列中的任何内容将从 1000 开始其深度,第 3 列将是 1500 等等。

这样,第二次我将一个对象放在一个特定的列上,它会将自己塞在下面,或者将自己放在其他列中的所有周围项目之上,这对我来说比以某种方式弄清楚 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 回答