动态制作的Sprite对象底部有边距/填充

时间:2010-09-18 15:28:29

标签: flash actionscript-3

好的,我不知道为什么会这样。

我创建了一个扩展Sprite类的Item类,Item类基本上有一些复选标记&目前的标签。

然后我尝试做的是运行for循环的项目并创建我想在y轴上一个接一个地放置的Item类,所以我正在读取Item.height属性以找到y列表中的下一个项目。

问题是由于某些原因,无论在每个Item类中有多少个复选标记和标签,都会在底部的Sprite高度上添加额外75个像素(改变高度)项目类)。

知道为什么要添加它以及如何删除它?

我无法搞清楚这一点,我尝试动态计算和设置Item.height属性,但是当我这样做时,Sprite只是被裁剪。

1 个答案:

答案 0 :(得分:1)

在正确设置UI组件的大小(默认高度为100像素)之前,需要一到两帧。

要防止此行为,请在您添加的每个Flash UI组件上调用validateNow()

var s:Sprite = new Sprite();
var label:Label = new Label();
label.text = "hello";
label.x = 0;
s.addChild(label);
var check:CheckBox = new CheckBox();
check.label = "hello";
check.x = 50;
s.addChild(check);
addChild(s);
trace(s.height); // output: 100

label.validateNow();
check.validateNow();
trace(s.height); // output: 28