2010-09-18 100 views
0

好吧,我不知道为什么会发生这种情况。动态制作的雪碧物体底部有边缘/填充

我做了一个Item类,它扩展了Sprite类,Item类基本上有几个复选标记&此刻。

然后我试图做的是通过项目的循环运行并创建项目类,我想在Y轴上放置一个接一个,所以我正在阅读Item.height属性来查找y列表中的下一个项目。

问题是由于某种原因,总有一个额外的75像素增加到底部的雪碧高度,无论每个Item类中有多少个选中标记和标签(改变Item类的高度)。

任何想法为什么这是被添加以及它如何被删除?

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

回答

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 
+0

谢谢,这是你获得的经验类型。 – 2010-09-18 16:51:13